捕获PHP的错误

 
更多

捕获PHP的错误 set_error_handler && register_shutdown_function

<?php
/**
 * 错误处理
 *
 * $error = new Error();
 *
 * set_error_handler(array($error,´errorHandler´));
 *
 * register_shutdown_function(array($error,´shutdown_handler´));
 *
 *
**/
class Error{

    public function errorHandler($errno, $errstr, $errfile, $errline,$errcontext) {
        $error_str = "";
        switch ($errno) {
            case E_USER_ERROR:
              $error_str = "<b>My ERROR</b> [$errno] $errstr Fatal error on line $errline in file $errfile </br>\n";
              break;
            case E_USER_WARNING:
              $error_str = "<b>My WARNING</b> [$errno] $errstr warning on line $errline in file $errfile </br>\n";
              break;
            case E_USER_NOTICE:
              $error_str = "<b>My NOTICE</b> [$errno] $errstr notice on line $errline in file $errfile </br>\n";
              break;
            case E_WARNING:
              $error_str = "<b>WARNING</b> [$errno] $errstr warning on line $errline in file $errfile </br>\n";
              break;
            case E_NOTICE:
              //$error_str = "<b>NOTICE</b> [$errno] $errstr notice on line $errline in file $errfile </br>\n";
              break;
            case E_STRICT:
              //$error_str = "<b>E_STRICT</b> [$errno] $errstr E_STRICT  on line $errline in file $errfile </br>\n";
              break;
            case E_ERROR:
              $error_str = "<b>ERROR</b> [$errno] $errstr Fatal error on line $errline in file $errfile </br>\n";
              break;
            default:
              $error_str = "Unknown error type: [$errno] $errstr warning on line $errline in file $errfile </br>\n";
              break;
        }
        echo $error_str;
        return true;
    }

    public function shutdown_handler(){
        if(connection_status() != ´0´){
            trigger_error("fatal error", E_USER_ERROR);
            header("location:/404.html");
        }
        if(is_null($e = error_get_last()) === false) {
            if ($e[´type´] == 1) {
                trigger_error("fatal error", E_USER_ERROR);
                header("location:/404.html");
            }
            set_error_handler(array($this,´errorHandler´));
        }
    }

}
打赏

本文固定链接: https://www.cxy163.net/archives/304 | 绝缘体

该日志由 绝缘体.. 于 2012年03月17日 发表在 PHP 分类下,
原创文章转载请注明: 捕获PHP的错误 | 绝缘体

报歉!评论已关闭.