关于全局错误,异常捕获

class Capture
{
    private static $callback;

    public static function register($callback)
    {
        self::$callback = $callback;
        set_error_handler([__CLASS__, 'errorHandle'], E_ALL ^ E_DEPRECATED ^ E_STRICT ^ E_NOTICE ^ E_WARNING);
        set_exception_handler([__CLASS__, 'exceptionHandle']);
        register_shutdown_function([__CLASS__, 'fatalHandle']);
    }

    public static function errorHandle($errno, $errstr, $errfile, $errline)
    {
        call_user_func_array(self::$callback, ['file'=>$errfile , 'line' => $errline , 'message' => $errstr, 'type' => 'user_error', 'level' => $errno]);
    }

    public static function exceptionHandle($exception)
    {
        call_user_func_array(self::$callback, ['file'=>$exception->getFile(), 'line' => $exception->getLine(), 'message' => $exception->getMessage(), 'type' => 'exception', 'level' => '']);
    }

    public static function fatalHandle()
    {
        $error = error_get_last ();
        // 捕捉对进程影响的错误信息,并给用户返回正确的页面
        if (in_array ( $error['type'], array (
            E_ERROR,
            E_CORE_ERROR,
            E_PARSE,
            E_USER_ERROR,
            E_COMPILE_ERROR,
            E_RECOVERABLE_ERROR,
        ) )) {
            call_user_func_array(self::$callback, ['file' => $error['file'], 'line' => $error['line'], 'message' => $error['message'], 'type' => 'error', 'level' => $error['type']]);
        }
    }
}

 

转载于:https://www.cnblogs.com/tianye8123/p/6131293.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值