以下代码抛出了一个我无法抓住的异常。
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有这个问题吗?
答案 0 :(得分:37)
提出问题后,我立即想到了答案。由于我在网上看到很多关于非常类似问题的帖子,我想我会继续回答这个问题。
问题是命名空间。 Carbon在我的应用程序中运行在不同的命名空间中(显然),所以当我尝试catch (Exception)
时,我实际上是试图在我的应用程序命名空间中捕获异常。将catch语句更改为catch (\Exception)
解决了它。
我希望这有助于任何人在此页面上结束。