PHP set_error_handler()Функции


PHP Error 参考手册Полное справочное руководство по ошибкам PHP

Определение и использование

Функция set_error_handler() устанавливает пользовательскую функцию обработки ошибок.

Эта функция используется для создания собственного метода обработки ошибок пользователя во время выполнения.

Эта функция возвращает предыдущий обработчик ошибок или NULL в случае неудачи.

Синтаксис

set_error_handler(error_function,error_types)

Parameters Описание
error_function Обязательный. Указывает функцию, которая должна выполняться при возникновении ошибки.
error_types Необязательный. Указывает, какой уровень сообщения об ошибках будет показывать ошибки, определённые пользователем. По умолчанию — "E_ALL". Возможные уровни сообщения об ошибках см. в таблице ниже.

error_function

Синтаксис

error_function(error_level,error_message,
error_file,error_line,error_context)

Parameters Описание
error_level Обязательный. Указывает уровень сообщения об ошибках для ошибок, определённых пользователем. Должен быть числовым значением. Возможные уровни сообщения об ошибках см. в таблице ниже.
error_message Обязательный. Указывает сообщение об ошибке для определяемой пользователем ошибки.
error_file Необязательный. Указывает имя файла, в котором произошла ошибка.
error_line Необязательный. Указывает номер строки, в которой произошла ошибка.
error_context Необязательный. Указывает массив, ссылающийся на активную таблицу символов, в которой произошла ошибка. Иными словами, error_context будет содержать массив, объясняющий область видимости, в которой существует каждая переменная, вызвавшая ошибку.

Уровни сообщений об ошибках

Значение Константа Описание
2 E_WARNING Нефатальные ошибки времени выполнения. Выполнение скрипта не останавливается.
8 E_NOTICE Уведомления времени выполнения. Скрипт обнаруживает нечто, что может быть ошибкой, но это также может происходить во время нормального выполнения скрипта.
256 E_USER_ERROR Фатальная ошибка, созданная пользователем. Это похоже на E_ERROR, созданную программистом с помощью функции PHP trigger_error().
512 E_USER_WARNING Нефатальная ошибка, созданная пользователем. Это похоже на E_WARNING, созданное программистом с помощью функции PHP trigger_error().
1024 E_USER_NOTICE Уведомление, созданное пользователем. Это похоже на E_NOTICE, сгенерированное программистом с помощью функции PHP trigger_error().
4096 E_RECOVERABLE_ERROR Перехватываемая фатальная ошибка. Это похоже на E_ERROR, которая может быть перехвачена пользовательским обработчиком (см. set_error_handler()).
8191 E_ALL Все уровни ошибок и предупреждений, кроме E_STRICT (начиная с PHP 6.0, E_STRICT будет частью E_ALL).


Советы и примечания

Совет:Если используется эта функция, стандартная функция обработки ошибок PHP полностью обходится. При необходимости пользовательский обработчик ошибок должен завершить скрипт (die()).

Примечание:Если ошибка возникает до выполнения скрипта, пользовательский обработчик ошибок не будет использоваться, потому что пользовательский обработчик еще не был зарегистрирован на тот момент.


Примеры

<?php
//функция обработчика ошибок
function customError($errno, $errstr, $errfile, $errline)
{
echo "<b>Пользовательская ошибка:</b> [$errno] $errstr<br />";
echo " Ошибка в строке $errline в файле $errfile<br />";
echo "Ending Script";
die();
}

//установить обработчик ошибок
set_error_handler("customError");

$test=2;

//вызвать ошибку
if ($test>1)
{
trigger_error("Пользовательская ошибка была вызвана");
}
?>

Вывод приведённого выше кода показан ниже:

Пользовательская ошибка: [1024] Пользовательская ошибка была вызвана
Ошибка в строке 19 в C:webfoldertest.php
Завершение скрипта


PHP Error 参考手册Полное справочное руководство по ошибкам PHP Другие расширения