Mar
17
2012
捕获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´)); } } }
最活跃的读者