PHP set_error_handler()Функции
Полное справочное руководство по ошибкам 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)
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("Пользовательская ошибка была вызвана");
}
?>
//функция обработчика ошибок
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
Завершение скрипта
Ошибка в строке 19 в C:webfoldertest.php
Завершение скрипта
Полное справочное руководство по ошибкам PHP Другие расширения