Вы можете создать функцию обработки пользовательских ошибок, например, так:
<?php
// error handler function
function myErrorHandler($errno, $errstr, $errfile, $errline)
{
if (!(error_reporting() & $errno)) {
// This error code is not included in error_reporting
return;
}
switch ($errno) {
case E_USER_ERROR: exit('Im a user error.');
case E_USER_WARNING: exit('Im a user warning');
case E_USER_NOTICE:
printNotice($errno, $errstr, $errfile, $errline);
break;
default: exit('Unknown Error');
}
// don't execute PHP internal error handler
return true;
}
function printNotice($errno, $errstr, $errfile, $errline)
{
// use the following vars to output the original error
var_dump($errno, $errstr, $errfile, $errline);
exit;
}
Важно константы: E_USER_NOTICE
и E_USER_WARNING
.
function printNotice()
показывает, как вы можете напечатать исходную ошибку, , чтобы она не была изменена, а затем прекратила выполнение сценария с выходом. Все исходные данные об ошибках (сообщение, номер строки и т. Д.) Находятся в переменных $ errno, $ errstr, $ errfile, $ errline. PHP делает данные об ошибках автоматически доступными на зарегистрированном обработчике ошибок (здесь myErrorHandler). В этом примере я переадресую все параметры во второй раз, чтобы напечатать функциюNotice(), которая могла бы форматировать ошибку по-другому или делать то, что вам нравится.
А затем зарегистрировать его set_error_handler(), например, так:
<?php
// register your error handler
set_error_handler('myErrorHandler');
Для того, чтобы проверить обработку ошибок вы можете использовать функцию trigger_error():
trigger_error("This is a User Error", E_USER_ERROR);
trigger_error("This is a User Warning", E_USER_WARNING);
trigger_error("This is a User Warning", E_USER_NOTICE);
Вы должны остановить его самостоятельно ... Создайте обработчик ошибок или создайте функцию ... –
Возможно, вы можете управлять ею с помощью исключений (@see http://www.w3schools.com/php/php_exception.asp) – dam660
Спасибо, но обратите внимание: «не исключение». – ChrisJJ