php错误和异常的重定向

通过重定向错误或异常,我们可以更安全的显示错误信息,一般也用来记录错误和异常日志。

参数可以是全局函数名,也可以是类中的方法,非静态方法通过数组传递类名和方法名进去, 静态方法直接带命名空间和类名,看代码

class myErrorClass{

  public function funError($errno, $errstr, $errfile, $errline){

    die($errstr);

  }

  public static function staticError($errno, $errstr, $errfile, $errline){

    die($errstr);

  }

}
//非静态方法绑定
set_error_handler(array('myErrorClass','funError'));
//静态方法绑定
set_error_handler('myErrorClass::staticError');

 

set_error_handler('funError');
set_exception_handler('funException');

function funError($errno, $errstr, $errfile, $errline) {
    die("[$errno] $errstr ".$errfile." 第 $errline 行.");
}

function funException($e) {
    $error = array();
    $error['message']   =   $e->getMessage();
    $trace              =   $e->getTrace();
    if('E'==$trace[0]['function']) {
        $error['file']  =   $trace[0]['file'];
        $error['line']  =   $trace[0]['line'];
    }else{
        $error['file']  =   $e->getFile();
        $error['line']  =   $e->getLine();
    }
    $error['trace']     =   $e->getTraceAsString();
    die($error['message'].$error['file']." 第 ".$error['line']." 行."):
}

 

posted @ 2019-07-10 18:09  1553  阅读(396)  评论(0编辑  收藏  举报