Разработчику. Сборник рецептов PHP
Задавайте вопросы

Применение пользовательского обработчика ошибок

Вернуться назад

Задача

Необходимо создать пользовательский обработчик ошибок, позволяющий управлять уровнем сообщений PHP об ошибках.

Решение

Для установки собственной функции обработки ошибок применяется функция set_error_handler():

set_error_handler('pc_error_handler');

function pc_error_handler($errno, $error, $file, $line) {
     $message = "[ERROR][$errno][$error][$file:$line]";
     error_log($message);

}

Обсуждение

Пользовательская функция обработки ошибок может анализировать ошибки на основании их типа и предпринимать соответствующие действия. Список типов ошибок приведен в табл. Настройка обработки ошибок

Передайте функции set_error_handler() имя функции, и PHP будет направлять все ошибки этой функции. Функция обработки ошибок может принимать до пяти параметров. Первый параметр – это тип ошибки, например 8 дляE_NOTICE. Второй параметр – это текст сообщения об ошибке, такой как «Undefined variable: html». Третий и четвертый аргументы содержат имя файла и номер строки, в которой PHP обнаружил ошибку. Последний параметр представляет массив, содержащий все переменные, определенные в текущей области видимости, и их значения.

Например, в следующем фрагменте кода к переменной $html прибавляется значение без предварительного присваивания начального значения:

error_reporting(E_ALL);
set_error_handler('pc_error_handler');

function pc_error_handler($errno, $error, $file, $line, $context) {
     $message = "[ERROR][$errno][$error][$file:$line]";
     print "$message";
     print_r($context);
}

$form = array('one','two');

foreach ($form as $line) {
     $html .= "<b>$line</b>";
}

Когда генерируется ошибка «Undefined variable», то функция pc_error_handler() печатает:

[ERROR][8][Undefined variable: html][err all.php:16]

Вслед за начальным сообщением об ошибке функция pc_error_handler() печатает большой массив, содержащий все глобальные переменные, переменные окружения, переменные запросов и переменные сеанса.

Еще раз подчеркнем, что ошибки, отмеченные в табл. Настройка обработки ошибок, как уловимые, можно обработать функцией, зарегистрированной с помощью функции set_error_handler(). С остальными связаны настолько серьезным проблемы, что пользователю лучше передоверить их обработку PHP.

См. также

Документацию по функции set_error_handler() на http://www.php.net/set-error-handler.

Вернуться назад

Рейтинг@Mail.ru

Яндекс.Метрика

Индекс цитирования


Рейтинг Сайтов ДОСКИ.РУ