LINUX.ORG.RU

Исключения и Laravel - не пойму

 catch, , , try,


0

1

Не пойму, почему не работают исключения.

Пишу такой код:

try {
    $phone=UserChannels::where('user', Auth::user()->id)->where('channel_type', $phoneTypeId)->first()->value;
} catch (Exception $e) { 
    $phone='';
}


По идее, при любой ошибке он должен просто сделать $phone=".

Но вместо этого Laravel показывает ошибку на длинной строке:

ErrorException (E_NOTICE)
Trying to get property of non-object


Вопрос: почему Laravel ловит исключение, а не блок catch{} ?

★★★★★

Последнее исправление: Xintrea (всего исправлений: 1)

скорее всего другой класс исключения
в пхп вроде 2е иерархии с 2мя разными базовыми классами

Bad_ptr ★★★★★
()

Exception $e

\Exception $e у тебя же неймспейс, да? Просто Exception будет из текущего неймспейса (это не то что ты хочешь, видимо).

no-such-file ★★★★★
()
Последнее исправление: no-such-file (всего исправлений: 1)
Ответ на: комментарий от Xintrea

чтобы эмулировать старое поведение, надо Throwable ловить

Не совсем так. В седьмой пых завезли исключения для всего, что раньше надо было через обработчик (error_handler) ловить и теперь можно ловить всё через Throwable. Через Exception ловится всё, что и раньше ловилось, т.е. ничего не поменялось. Для обратной совместимости нужно ловить оба (пых до 7 будет ловить Exception, 7 - Throwable), а если ориентироваться только на php7 то можно ловить только Throwable.

no-such-file ★★★★★
()
Последнее исправление: no-such-file (всего исправлений: 1)
Ответ на: комментарий от no-such-file

В общем, решилась проблема просто путем прописывания

use \Exception;


Throwable ловить не надо. Котом из топика ErrorException ловится. PHP 7.0.33-0+deb9u3

Xintrea ★★★★★
() автор топика
Последнее исправление: Xintrea (всего исправлений: 1)
Ответ на: комментарий от Xintrea

Throwable базовый интерфейс для всех исключений, включая и Exception. Кстати, в Java также.

first() может вернуть null, лучше бы вы это ifом обработали. По умолчанию Throwable не умеет в E_NOTICE. Это не Java, с ее NPE

fman2
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.