English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
PHP Ошибки и логирование справочное руководство
Функция set_error_handler() устанавливает пользовательскую функцию обработки ошибок
mixed set_error_handler (callback $error_handler[, int $error_types]);
Установите функцию пользователя (error_handler) для обработки ошибок, возникающих в скрипте.
Эта функция может использоваться для обработки ошибок во время выполнения, например, при возникновении серьезной ошибки в приложении или при возникновении ошибки в определенных условиях (использование trigger_error()), вам нужно выполнить очистку и回收 данных/файлов.
Важно помнить, что все типы ошибок, указанные в error_types, будут обходить стандартный обработчик ошибок PHP,除非 функция回调 вернет FALSE. Параметр error_reporting() не будет действовать, и ваша функция обработки ошибок продолжит вызываться — хотя вы все еще можете получить текущее значение error_reporting и обработать его соответствующим образом. 特别 следует отметить, что при возникновении ошибки в语句 с префиксом @ error-control operator это значение будет равно 0.
Кроме того, обратите внимание, что при необходимости вы должны использовать die(). Если функция обработки ошибок вернулась, скрипт продолжит выполнение на следующей строке после ошибки.
Следующие уровни ошибок не могут быть обработаны функцией пользователя: E_ERROR, E_PARSE, E_CORE_ERROR, E_CORE_WARNING, E_COMPILE_ERROR, E_COMPILE_WARNING и большинство E_STRICT, возникающих в файле, в котором вызывается функция set_error_handler().
Если ошибка возникает до выполнения скрипта (например, при загрузке файла), пользовательская функция обработки ошибок не будет вызываться, так как она еще не зарегистрирована в то время.
Номер | Параметры и описание |
---|---|
1 | error_handler (обязателен) Она определяет функцию, которая будет выполняться при возникновении ошибки. Ниже приведена грамматика error_handler. |
2 | error_types (опционально) Она определяет, на каком уровне отчета об ошибках будут отображаться пользовательские ошибки. Значением по умолчанию является «E_ALL». О возможных уровнях отчета об ошибках см. в разделе «Константы PHP для ошибок и журналирования:». |
error_function(error_level, error_message, error_file, error_line, error_context);
Это описание paramenter
errno - Первый параметр errno, это уровень ошибки, это целое число.
errstr - Второй параметр errstr, это строка, содержащая информацию об ошибке.
errfile - Третий параметр, errfile, это опциональный параметр, содержащий имя файла, в котором произошла ошибка, это строка.
errline - Четвертый параметр, errline, это опциональный параметр, содержащий номер строки, в которой произошла ошибка, это целое число.
errcontext - Пятый опциональный параметр, errcontext, это массив, указывающий на активную таблицу символов в момент возникновения ошибки. То есть, errcontext содержит массив всех переменных в текущей области видимости, где произошла ошибка. Обработчик ошибок пользователя не должен изменять контекст ошибки.
Если ранее был определен обработчик ошибок, возвращается строка с именем этого обработчика; если это встроенный обработчик ошибок, возвращается NULL. Если указан неэффективный回调-функция, также возвращается NULL. Если предыдущий обработчик ошибок является методом класса, функция возвращает индексный массив (indexed array) с именем класса и методом.
Ниже приведено использование функции set_error_handler:
<?php function customError($errno, $errstr, $errfile, $errline) { echo "Пользовательская ошибка: [$errno] $errstr\n"; echo "Ошибка на строке $errline в $errfile\n"; echo "Конец скрипта"; die(); } // Установка обработчика ошибок set_error_handler("customError"); $test = 0; // Триггер ошибки if ($test > -1) { trigger_error("Триггерирована пользовательская ошибка"); } ?>Проверим </>
Результат вывода:
Пользовательская ошибка: [1024] Вызвана пользовательская ошибка. Ошибка на строке 16 в /home/cg/root/1531703/main.php Конец скрипта