wladyspb
@wladyspb
Программист

Как отловить исключение в Laravel и продолжить работу?

Ларавел использует достаточно удобный общий обработчик ошибок, но дефолтное поведение предполагает, что исключение должно завершать работу программы. Однако, я использую обращение к несущественному сервису, и знаю, что мне делать дальше если он не ответит. Тем не менее, когда он бросает исключение, рендер страницы прерывается и выдаётся ошибка(
Я пытался отлавливать исключение, явно указывая класс исключения, пытался отловить общее исключение, пытался отключить exeption_handler - но мой блоr try catch полностью игнорируется.
Кусок кода (Предполагается, что он должен нормально отрабатывать в ЛЮБОЙ ситуации - и если я не достучусь до кликхауса, и если достучусь, но не будет результатов):

set_exception_handler(null);
            try{
                $raw = Clickhouse::select("SELECT AVG(rate) as rate FROM Likes WHERE game = {$game->id}");
            } catch (\Exception $e) {
                return $game->base_rate;
            }
            restore_exception_handler();
            if (!$raw) {
                return $game->base_rate;
            }
  • Вопрос задан
  • 945 просмотров
Пригласить эксперта
Ответы на вопрос 1
v_decadence
@v_decadence
Исключение должно отлавливаться через try/catch, тогда оно не будет доходить до глобального Handler. Если у вас это не работает, значит что-то делаете неправильно: ловите не то исключение или вообще не тот код вызывается, раз у вас даже try не срабатывает. Какое исключение оказывается записанным в лог?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы