PHP中自定义错误处理
PHP中自定义错误处理
set_error_handler() 函数设置用户自定义的错误处理函数。
该函数用于创建运行时期间的用户自己的错误处理方法。
该函数会返回旧的错误处理程序,若失败,则返回 null。
语法
set_error_handler(error_function,error_types)
参数 描述
error_function 必需。规定发生错误时运行的函数。
error_types 可选。规定在哪个错误报告级别会显示用户定义的错误。默认是 "E_ALL"。
提示和注释
提示:如果使用了该函数,会完全绕过标准的 PHP 错误处理函数,如果必要,用户定义的错误处理程序必须终止 (die() ) 脚本。
注释:如果在脚本执行前发生错误,由于在那时自定义程序还没有注册,因此就不会用到这个自定义错误处理程序。
1.测试一
function myErrorHandler($errno, $errstr, $errfile, $errline)
{
switch ($errno) {
case E_USER_ERROR:
echo "<b>My ERROR</b> [$errno] $errstr<br />\n";
echo " Fatal error in line $errline of file $errfile";
echo ", PHP " . PHP_VERSION . " (" . PHP_OS . ")<br />\n";
echo "Aborting...<br />\n";
exit(1);
break;
case E_USER_WARNING:
echo "<b>My WARNING</b> [$errno] $errstr<br />\n";
break;
case E_USER_NOTICE:
echo "<b>My NOTICE</b> [$errno] $errstr<br />\n";
break;
default:
echo "Unkown error type: [$errno] $errstr<br />\n";
break;
}
}
set_error_handler("myErrorHandler");
function testArgs2($a) {
if (func_num_args() != 1) {
trigger_error("Missing parameter \$a", E_USER_ERROR);
}
echo $a;
}
testArgs2();
输出如下:
Unkown error type: [2] Missing argument 1 for testArgs2(), called in E:\myphp\research\test2.php on line 223 and defined
My ERROR [256] Missing argument $a
Fatal error in line 217 of file E:\myphp\research\test2.php, PHP 5.2.8 (WINNT)
Aborting...
2.测试二
function testArgs2($a) {
if (func_num_args() != 1) {
trigger_error("Missing argument \$a", E_USER_ERROR);
}
echo $a;
}
testArgs2();
输出如下:
Warning: Missing argument 1 for testArgs2(), called in E:\myphp\research\test2.php on line 223 and defined in E:\myphp\research\test2.php on line 215
Fatal error: Missing argument $a in E:\myphp\research\test2.php on line 217