无法捕获 Carbon 抛出的异常
Can't catch Exception thrown by Carbon
以下代码抛出一个异常,我出于某种原因无法捕获。
try {
$this->date = \Carbon\Carbon::parse($this->date)->toDateString();
}
catch (Exception $err) {
$this->date = \Carbon\Carbon::parse("January 1st 1900")->toDateString();
}
现在,如果我将它放在我的路由文件中的函数闭包中,它就可以正常工作。它仅在从模型调用时抛出异常。
exception 'Exception' with message 'DateTime::__construct(): Failed to parse time string (Summer 2015) at position 0 (S): The timezone could not be found in the database' in /home/vagrant/www/steamcompare/vendor/nesbot/carbon/src/Carbon/Carbon.php:222
还有其他人遇到过 Carbon 的这个问题吗?
提出问题后,我立即想到了答案。因为我在网上看到很多关于非常相似问题的帖子,所以我想我会继续回答这个问题。
问题是命名空间。 Carbon 运行 与我的应用程序位于不同的命名空间中(很明显),所以当我尝试 catch (Exception)
时,我实际上是在尝试在我的应用程序的命名空间中捕获异常。将 catch 语句更改为 catch (\Exception)
解决了它。
我希望这对最终访问此页面的任何人有所帮助。
以下代码抛出一个异常,我出于某种原因无法捕获。
try {
$this->date = \Carbon\Carbon::parse($this->date)->toDateString();
}
catch (Exception $err) {
$this->date = \Carbon\Carbon::parse("January 1st 1900")->toDateString();
}
现在,如果我将它放在我的路由文件中的函数闭包中,它就可以正常工作。它仅在从模型调用时抛出异常。
exception 'Exception' with message 'DateTime::__construct(): Failed to parse time string (Summer 2015) at position 0 (S): The timezone could not be found in the database' in /home/vagrant/www/steamcompare/vendor/nesbot/carbon/src/Carbon/Carbon.php:222
还有其他人遇到过 Carbon 的这个问题吗?
提出问题后,我立即想到了答案。因为我在网上看到很多关于非常相似问题的帖子,所以我想我会继续回答这个问题。
问题是命名空间。 Carbon 运行 与我的应用程序位于不同的命名空间中(很明显),所以当我尝试 catch (Exception)
时,我实际上是在尝试在我的应用程序的命名空间中捕获异常。将 catch 语句更改为 catch (\Exception)
解决了它。
我希望这对最终访问此页面的任何人有所帮助。