PHP set_error_handler() 函数设置用户定义的错误函数来处理脚本中的错误。
此函数用于定义用户在运行时处理错误的方式,例如在发生严重错误时需要清理数据/文件的应用程序中,或者在某些条件下需要触发错误时.
对于由 error_levels 指定的错误类型,标准 PHP 错误处理程序将被完全绕过,除非回调函数返回 false。如果需要,用户定义的错误处理程序必须终止脚本 die()。 error_reporting() 设置对此函数没有影响,无论如何都会调用此函数 - 但用户仍然会能够读取 error_reporting 的当前值并采取适当的行动。
以下错误类型无法使用用户定义的函数进行处理:E_ERROR、E_PARSE、E_CORE_ERROR、E_CORE_WARNING、E_COMPILE_ERROR、E_COMPILE_WARNING,无论它们在何处引发,大部分 E_STRICT 是在调用此函数的文件中引发的。
如果在执行脚本之前发生错误,则无法调用自定义错误处理程序,因为当时尚未注册它。
语法
set_error_handler(callback, error_levels)
参数
callback | 必填。 使用以下签名指定函数。可以改为传递 null,以将此处理程序重置为其默认状态。除了函数名之外,还可以使用包含对象引用和方法名的数组。
|
error_level | 可选。 指定当前脚本的error_reporting级别。它采用位掩码或预定义常量中描述的命名常量。建议使用命名常量以确保未来版本的兼容性。默认值为"E_ALL"。 |
返回值
返回先前定义的错误处理程序(如果有)。如果使用内置错误处理程序,则返回 null。如果前面的错误处理程序是类方法,则此函数将返回一个包含类和方法名称的索引数组。
示例:set_error_handler() 示例
下面的示例显示set_error_handler() 函数的用法。
<?php
//用户定义的错误处理函数
function myErrorHandler($errno, $errstr, $errfile, $errline) {
echo "<b>My ERROR</b> [$errno] $errstr<br>\n";
echo "Error on line $errline in file $errfile<br>\n";
echo "Aborting...<br>\n";
}
//设置用户自定义错误处理函数
set_error_handler("myErrorHandler");
$test = 100;
//触发用户定义的错误处理函数
if ($test==100) {
trigger_error("A custom error has been triggered");
}
?>
上述代码的输出将是:
My ERROR [1024] A custom error has been triggered
Error on line 20 in file index.php
Aborting...