php中的自定义错误处理

在php中有三个函数用于自定义错误处理,它们的目的都是为了接管系统默认处理错误的方式,因为系统默认的处理方式是直接输出错误信息,很不友好,而且有时候我们希望在出现异常的时候,做一些逻辑,所以,自定义错误处理显得很有必要。

php中的自定义错误处理

php程序员

如下所示:

set_error_handler

这个函数用于处理notice错误warning错误用户自定义的错误等(对于让脚本执停止运行的那种错误,将不会走这个回调),被捕获的错误将会走用户自定义的回调,不会按系统默认的方式直接输出错误信息。

set_error_handler(function ($errorNo, $errorStr, $errorFile, $errorLine) {
    if (error_reporting() & $errorNo) {
        switch ($errorNo) {
            case E_USER_ERROR:
                printf("错误编号:%s,消息:%s,文件:%s,行:%s" . PHP_EOL, $errorStr, $errorFile, $errorLine);
                exit(1);
            case E_USER_WARNING:
                printf("消息:%s,文件:%s,行:%s" . PHP_EOL, $errorStr, $errorFile, $errorLine);
                break;
            case E_USER_NOTICE:
                printf("消息:%s,文件:%s,行:%s" . PHP_EOL, $errorStr, $errorFile, $errorLine);
                break;
            default:
                printf("错误编号:%s,消息:%s,文件:%s,行:%s" . PHP_EOL, $errorNo, $errorStr, $errorFile, $errorLine);
                break;
        }
    }
}, E_ALL | E_STRICT);

// 自动触发,对于会让脚本中断执行的错误,不会执行回调
$foo['bar'];  // 由于数组未定义,会产生一个notice级别的错误
$connect = mysqli_connect("localhost", "username", "password", "dbname");//warning

// 人为触发
trigger_error("用户自定义注意!", E_USER_NOTICE);
trigger_error("用户自定义警告!", E_USER_WARNING);
trigger_error("用户自定义错误!", E_USER_ERROR);

set_exception_handler

这个函数用于处理用户自定义的异常,有时候我们不想捕获异常,想直接抛出异常,这个方法就可以实现这个需求:

set_exception_handler(function (Throwable $e) {
    echo '错误消息:' . $e->getMessage();
});

// 调用未定义的方法将会产生一个Error异常,可以被Throwable异常接受
foobar(3, 5);

register_shutdown_function

这个函数用于处理,php脚本停止的时候执行逻辑,比如脚本执行完成、exit()退出、内存超出等情况,会导致脚本结束,这个时候可以注册一个回调,在脚本结束的时候执行一些逻辑:

register_shutdown_function(function () {
    // 脚本结束时候,有错误才要执行
    if (!is_null($error = error_get_last())) {
        print_r($error);
    }
});
getName();
展开阅读全文

页面更新:2024-03-20

标签:错误   目的   脚本   函数   逻辑   异常   编号   消息   结束   未定义   方式   文件   方法   数码   用户

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top