通过重定向错误或异常,我们可以更安全的显示错误信息,一般也用来记录错误和异常日志。
参数可以是全局函数名,也可以是类中的方法,非静态方法通过数组传递类名和方法名进去, 静态方法直接带命名空间和类名,看代码
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']." 行."): }