Рубрики
Uncategorized

Анализ метода самостоятельной обработки ошибок в PHP

Автор оригинала: David Wong.

Эта статья иллюстрирует метод пользовательской обработки ошибок в PHP. Поделитесь для вашей справки следующим образом:

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

★Вы можете записать неверную информацию и вовремя обнаружить некоторые проблемы в производственной среде.

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

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

Его можно использовать в качестве инструмента отладки. Иногда необходимо что-то отлаживать в рабочей среде, не влияя на используемых пользователей.

Обычно используется set_error_handler() Функция для установки определяемой пользователем функции обработки ошибок, которая используется для создания собственного метода обработки ошибок пользователя во время выполнения, возвращает старую программу обработки ошибок, в случае сбоя возвращает значение null. Функция имеет два параметра, первый из которых является необязательным и требует, чтобы функция обратного вызова указывала функцию, которая будет выполняться при возникновении ошибки. Эта функция обратного вызова должна объявить четыре параметра, в противном случае она недопустима, в порядке “есть ли ошибка”, “сообщение об ошибке”, “файл ошибки” и “номер строки ошибки”. set_error_handler() Второй параметр функции является необязательным, указывая, на каком уровне отчетов об ошибках теперь отображаются определенные пользователем ошибки. Значение по умолчанию – “E_ALL”. Пример пользовательской обработки ошибок выглядит следующим образом:

php
Error_reporting (0); //Shielding Errors in Programs
// Define the Error_Handler function as the first parameter "callback" of the set_error_handler() function
function error_handler($error_level,$error_message,$file,$line){
$EXIT =FALSE;
switch($error_level){
// Reminder level
case E_NOTICE:
case E_USER_NOTICE:
$error_type = 'Notice';
break;
// Warning level
case E_WARNING:
case E_USER_WARNING:
$error_type='warning';
break;
// Error level
case E_ERROR:
case E_USER_ERROR:
$error_type='Fatal Error';
$EXIT = TRUE;
break;
// Other unknown errors
default:
$error_type='Unknown';
$EXIT = TRUE;
break;
}
// Print error information directly, or write files, write databases, anyway, the error information is here, you can send it.
printf("%s:%s in%s on line %d
\n",$error_type, $error_message, $file, $line); // If the error affects the normal execution of the program, jump to a friendly error prompt page if (TURE==$EXIT){ echo '