Перехват ошибок PHP как исключения в Yii

Как вы думаете, что произойдёт если попробовать выполниться следующий код в среде 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