一个php的异常处理程序,功能很简单当发生重大错误时,写日志并友好提示用户.
代码:
'.[shutdown] lvl: . $lasterror['type'] . | msg: . $lasterror['message'] . | file: . $lasterror['file'] . | ln: . $lasterror['line'].\n;file_put_contents('./log/'.date(ymd).'shutdownlog.txt',$error,file_append);//友好提示用户ob_end_clean();die('对不起,我出错了!');}}register_shutdown_function('shutdownhandler');}if(!defined('debug')){ function errorhandler($errno, $errstr = '', $errfile = '', $errline = 0){//写日志$exception = new \errorexception($errstr, 0, $errno, $errfile, $errline);$msg = strval(date(y-m-d h:i:s)).'=>'.'type:'.geterrtypename($errno).' '.getmsg($exception);file_put_contents('./log/'.date(ymd).'error.txt',$msg,file_append);switch ($errno){case e_notice:return ;case e_deprecated:return;}throw $exception;}function geterrtypename($errno){switch ($errno){case e_notice:return 'e_notice' ;case e_deprecated:return 'e_deprecated';default:return $errno;}}function exceptionhandler($ex){$msg = strval(date(y-m-d h:i:s)).'=>'.getmsg($ex);file_put_contents('./log/'.date(ymd).'exception.txt',$msg,file_append);} www.jbxue.comfunction getmsg($exception){//获取最准确的异常 while($exception->getprevious())$exception = $exception->getprevious();$msg = ' message: '.$exception->getmessage();$msg .= ' file: '.$exception->getfile().':'.$exception->getline().\n;return $msg;}set_error_handler('errorhandler',e_all);set_exception_handler('exceptionhandler');}?>
?