2015-07-06 3 views
10

Следующий код генерирует исключение, которое я не могу поймать по какой-либо причине.Не удается поймать Исключение, выброшенное 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?

ответ

28

Сразу после постановки вопроса, я подумал об ответе. Поскольку я видел много сообщений в Интернете по очень похожим вопросам, я подумал, что буду идти дальше и ответить на этот вопрос.

Вопрос был в отношении имен. Углерод работал в другом пространстве имен из моего приложения (очевидно), поэтому, когда я пытался использовать catch (Exception), я действительно пытался поймать исключение в пространстве имен моего приложения. Изменение оператора catch на catch (\Exception) разрешило его.

Я надеюсь, что это поможет любому, кто попадает на эту страницу.

+3

Вы должны пометить свой ответ как правильный ответ, когда вы здесь отвечаете на свой вопрос :) – alexrussell

+2

Я буду, как только таймер, который так ставит вопрос, уйдет. – Nathan

+2

Ах, извините, не понял, что был один. – alexrussell

Смежные вопросы