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´));
}
}
}
微信扫一扫,打赏作者吧~
最活跃的读者