无法捕获Carbon抛出的Exception

Nat*_*han 13 php laravel php-carbon laravel-5

以下代码抛出了一个异常,无论出于何种原因我都无法捕获.

try {
    $this->date = \Carbon\Carbon::parse($this->date)->toDateString();
}
catch (Exception $err) {
    $this->date = \Carbon\Carbon::parse("January 1st 1900")->toDateString();
}
Run Code Online (Sandbox Code Playgroud)

现在,如果我将它放在函数闭包中的我的路径文件中,它可以正常工作.它只是在从模型中调用时抛出异常.

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

有没有其他人有碳这个问题?

Nat*_*han 42

提出问题后,我立即想到了答案.由于我在网上看到很多关于非常类似问题的帖子,我想我会继续回答这个问题.

问题是命名空间.Carbon在我的应用程序的不同名称空间中运行(显然),所以当我尝试时,catch (Exception)我实际上是在我的应用程序命名空间中捕获异常.更改catch语句以catch (\Exception)解决它.

我希望这可以帮助任何最终在此页面上的人.

  • 当你在这里回答你的问题时,你应该将你的答案标记为正确答案:) (3认同)
  • 一个frickin'反斜杠...... (3认同)
  • 一旦SO提出问题的计时器消失,我会的. (2认同)
  • 啊抱歉没有意识到有一个. (2认同)
  • 不用担心,您必须等待48小时才能接受自己的答案.= / (2认同)
  • 我想通过询问和回答他们自己的问题负载和负载来阻止人们人为地增加他们的分数. (2认同)