天天看点

PHP的错误级别与自定义错误处理

级别常量 错误值 错误描述
E_ERROR 1 致命的运行错误(阻止脚本继续运行)
E_WARNING 2 运行时警告
E_PARSE 4 从语法中解析错误
E_NOTICE 8 运行时注意消息
E_CORE_ERROR 16 PHP启动时初始化过程中的致命错误
E_CORE_WARNING 32 PHP启动时初始化过程中的警告
E_COMPILE_ERROR 64 编译时致命错误
E_COMPILE_WARNING 128 编译时警告
E_USER_ERROR 256 用户自定义的致命错误
E_USER_WARNING 512 用户自定义的警告
E_USER_NOTICE 1024 用户自定义的提醒
E_STRICT 2048 编码标准化警告
E_ALL 6143 所有的错误、警告和注意消息

以下级别的错误不能由用户定义的函数来处理:

E_ERROR 、

E_PARSE 、

E_CORE_WARNING 、

E_COMPILE_ERROR 、

E_COMPILE_WARNING

和在 调用 set_error_handler() 函数所在文件中产生的大多数 E_STRICT 。

如果错误发生在脚本执行之前(比如文件上传时),将不会 调用自定义的错误处理程序因为它尚未在那时注册。

<?php
set_error_handler('my_error');
$message = '';
function my_error($error_type, $error_message, $error_file, $error_line)
{
    global $message;
    $message = "错误类型{$error_type},错误消息{$error_message},错误文件{$error_file},在{$error_line}行".PHP_EOL;
}
gettype($a);
echo '111';
gettype();
echo '222';
echo $message;
EXIT;
           
php