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