当前位置:首页 > PHP教程 > php应用 > 列表

分享一个php 的异常处理程序

发布:smiling 来源: PHP粉丝网  添加日期:2021-03-01 22:34:49 浏览: 评论:0 

给大家分享一个php的异常处理程序,功能很简单当发生重大错误时,写日志并友好提示用户,用处却很大,对不对,直接上代码:

  1. <?php 
  2. //exceptionHandle.php xiecongwen 20140620 
  3. //define('DEBUG',true); 
  4. /** 
  5. * Display all errors when APPLICATION_ENV is development. 
  6. */ 
  7. if (defined('DEBUG')) { 
  8. error_reporting(E_ALL); 
  9. ini_set("display_errors", 1); 
  10. if(!defined('DEBUG')){ 
  11. /** 
  12. * 当发生重大错误时 写日志 并友好提示用户 
  13. * (PS:只所以将代码写在这里,是因为在其他地方注册时,出现问题无法调用配置函数.待完善...) 
  14. */ 
  15. function shutdownHandler() 
  16. /** 
  17. * 写日志 此处直接写在根目录下shutdownlog.txt 
  18. */ 
  19. $lasterror = error_get_last(); 
  20. if($lasterror){ 
  21. $error = strval(date("Y-m-d h:i:s")).'=>'."[SHUTDOWN] lvl:" . $lasterror['type'] . " | msg:" . $lasterror['message'] . " | file:" . $lasterror['file'] . " | ln:" . $lasterror['line']."\n"
  22. file_put_contents('./log/'.date("Ymd").'shutdownlog.txt',$error,FILE_APPEND); 
  23. //友好提示用户 
  24. ob_end_clean(); 
  25. die('对不起,我出错了!'); 
  26. register_shutdown_function('shutdownHandler'); 
  27. if(!defined('DEBUG')){ 
  28.    
  29. function errorHandler($errno$errstr = ''$errfile = ''$errline = 0) 
  30. //写日志 
  31. $exception = new \ErrorException($errstr, 0, $errno$errfile$errline); 
  32. $msg = strval(date("Y-m-d h:i:s")).'=>'.'Type:'.getErrTypeName($errno).' '.getMsg($exception); 
  33. file_put_contents('./log/'.date("Ymd").'error.txt',$msg,FILE_APPEND); 
  34. switch ($errno
  35. case E_NOTICE:return ; 
  36. case E_DEPRECATED:return
  37. throw $exception
  38. function getErrTypeName($errno
  39. switch ($errno
  40. case E_NOTICE:return 'E_NOTICE' ; 
  41. case E_DEPRECATED:return 'E_DEPRECATED'
  42. default:return $errno
  43. function exceptionHandler($ex
  44. $msg = strval(date("Y-m-d h:i:s")).'=>'.getMsg($ex); 
  45. file_put_contents('./log/'.date("Ymd").'exception.txt',$msg,FILE_APPEND); 
  46. function getMsg($exception
  47. //获取最准确的异常  
  48. while($exception->getPrevious())$exception = $exception->getPrevious(); 
  49. $msg = ' Message: '.$exception->getMessage(); 
  50. $msg .= ' File: '.$exception->getFile().':'.$exception->getLine()."\n"
  51. return $msg
  52. set_error_handler('errorHandler',E_ALL); 
  53. set_exception_handler('exceptionHandler'); 
  54. ?> 

Tags: php异常处理程序

分享到: