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

Как вы думаете, что произойдёт если попробовать выполниться следующий код в среде Yii фреймворка?

    try
    {
        $i = 1 / 0;
    }
    catch(Exception $e)
    {
        echo 'catch!';
    }

Те кто думает, что будет выведено "catch!", ошибаются. Будет выведена страница ошибки.

В базовом PHP, перехват обычных ошибок как исключений также не включен по-умолчанию, но работая с фреймворком, для меня, именно такое поведение является наиболее удобным и логичным.

Чтобы настроить перехват ошибок PHP как исключений, нужно переопределить error_handler фреймворка на свой, и генерировать исключение типа ErrorException. Этот класс появился в PHP в версии 5.1.0. Сделать это, можно прямо в index.php приложения:

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");

Теперь, можно перехватывать ошибки PHP как исключения.

comments powered by HyperComments