Перехват ошибок 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