@zbender

Yii. Как отлавливать notice в try?

Пример:
try{
           echo  $a[не_сущестует];
 } catch (Exception $ex) { }

В этом случае try не сработает.
Как правильно настроить Yii, чтобы в подобных случаях отлавливалась ошибка?
  • Вопрос задан
  • 2633 просмотра
Решения вопроса 1
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
notice не exception. Можно повесить свой хэндлер ошибок который будет трансформировать notice в exception.

php.net/manual/ru/class.errorexception.php
ideone.com/VEuyrf - пример
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
polyanin
@polyanin
Golang, PHP & Symfony developer
Комментировать
fornit1917
@fornit1917
Yii тут не при чем.
PHP не бросает исключенией при обращении к несуществующему элементу массива. В лучшем случае он вывалит NOTICE или WARNING какой-нить, но это не отлавливается в try..catch. В PHP для обработки таких ошибок есть отдельные функции: php.net/manual/ru/book.errorfunc.php

Хотя в Yii 2 по-моему сделали так, что php-шные ошибки конвертятся в исключения.
Ответ написан
Зачем превращать Notice в настоящие Exception? Ну если вам прямо так надо:
try{
    if(!isset($a['some_index']){ throw new Exception('Index does not exists!'); }
 } catch (Exception $ex) { }
Ответ написан
Ваш ответ на вопрос

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

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