Как вы думаете, что произойдёт если попробовать выполниться следующий код в среде Yii фреймворка?
[code] try { $i = 1 / 0; } catch(Exception $e) { echo 'catch!'; } [/code]
Те кто думает, что будет выведено "catch!", ошибаются. Будет выведена страница ошибки.
В базовом PHP, перехват обычных ошибок как исключений также не включен по-умолчанию, но работая с фреймворком, для меня, именно такое поведение является наиболее удобным и логичным.
Чтобы настроить перехват ошибок PHP как исключений, нужно переопределить error_handler фреймворка на свой, и генерировать исключение типа ErrorException. Этот класс появился в PHP в версии 5.1.0. Сделать это, можно прямо в index.php приложения:
[code]
define('YII_ENABLE_ERROR_HANDLER', FALSE);
function exception_error_handler($errno, $errstr, $errfile, $errline ) { throw new ErrorException($errstr, 0, $errno, $errfile, $errline); }
set_error_handler("exception_error_handler"); [/code]
Теперь, можно перехватывать ошибки PHP как исключения.
23.04.2014