我在项目中Springmvc异常日志处理(二) ps:如何有更好的方法,请写到评论中多多交流,谢谢!
来源:互联网 发布:条码软件label matrix 编辑:程序博客网 时间:2024/05/22 05:14
异常处理思想:
当程序发生异常时,可以有2种方式处理(实际项目中2种方式一起使用,必要的时候,需要手动捕获异常来处理):
1.交给spring框架处理(例如后台发生错误,框架帮你统一返回500页面等,默认的操作都一样)
2.手动处理try--catch (例如当后台程序发生错误的时候,假设我偏要返回404页面,不是用框架返回)
下面针对2种方式做下 详细描述:
一。框架捕获异常
步骤一:自定义spring框架处理异常的类,Controller,用来统一捕获处理异常
package lms.common.web;import lms.common.utils.Exceptions;import lms.common.web.entity.ExceptionResponse;import org.apache.shiro.authz.UnauthorizedException;import org.springframework.http.HttpStatus;import org.springframework.web.bind.annotation.ControllerAdvice;import org.springframework.web.bind.annotation.ExceptionHandler;import org.springframework.web.bind.annotation.ResponseStatus;import org.springframework.web.context.request.NativeWebRequest;import org.springframework.web.servlet.ModelAndView;@ControllerAdvicepublic class DefaultExceptionHandler {@ExceptionHandler({Exception.class})public ModelAndView myException(Exception e){System.out.println("myException=====");Exceptions.setFlagEx(e);ModelAndView mv = new ModelAndView();if(e instanceof java.lang.NullPointerException){String tips = Exceptions.getTips("NullPointerException",e);errorMessageToConsoleAndFront(mv,tips,"error/500");}else if(e instanceof java.sql.SQLException){String tips = Exceptions.getTips("java.sql.SQLException",e);errorMessageToConsoleAndFront(mv,tips,"error/500");}else {String tips = Exceptions.getTips("服务器尚未定义这种异常",e);errorMessageToConsoleAndFront(mv,tips,"error/500");}return mv;}/** * 把错误信息在控制台输出和在前台页面得到 */private ModelAndView errorMessageToConsoleAndFront(ModelAndView mv,String tips,String pageName){//控制台输出System.out.println(tips);//传给前台,返回的页面mv.addObject("errorMessage", tips);/*mv.setViewName(pageName);*/return mv;}}
package lms.modules.knowledge.web;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.ResponseBody;@Controller@RequestMapping("/test")public class Test {@RequestMapping("/testException")public String testException(HttpServletRequest request,HttpServletResponse response){String id = request.getParameter("id");String name = request.getParameter("name");System.out.println("id:" + id + "name : " + name);throw new NullPointerException("===空执针异常测试====");//产生异常,不管,交由DefaultExceptionHandler处理}}
二.手动处理异常
测试类:
package lms.modules.knowledge.web;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.ResponseBody;@Controller@RequestMapping("/test")public class Test { @RequestMapping("/testException") public String testException(HttpServletRequest request,HttpServletResponse response){ try{ throw new NullPointerException("===空执针异常测试===="); //发生异常 }catch(Exception e){ //捕获手动处理异常 /** * 1.处理 * 2.记录日志 */ } return ""; }}
0 0
- 我在项目中Springmvc异常日志处理(二) ps:如何有更好的方法,请写到评论中多多交流,谢谢!
- 我在项目中Springmvc处理异常并记录日志(一) ps:如何有更好的方法,请写到评论中多多交流,谢谢!
- 存储过程中 事务的处理 大家有更好的方法请分享 谢谢了。
- spirngMVC如何在项目中打印异常日志+springmvc事务控制详解
- 如何在Solr中更好的处理同义词
- 如何更好的处理异常
- 在springMVC中使用自定义的异常处理
- springmvc中异常处理
- 关于mysql中触发器old和new如何更好的区别我有话要说?
- 项目中异常的处理
- 如何在基于SpringMVC的项目中实现邮箱验证
- 总结项目中常见的异常,及处理方法
- 如何在DELPHI的XML中进行换行操作。谢谢!!!!
- springmvc中直接在Resposboday中处理数据的异常解决方法
- 在开发SSH项目时,使用Log4j配置监听日志,出现的异常处理方法
- 如何在shell中处理异常
- 如何在Application中进行异常处理
- SpringMvc 中全局异常处理
- AiX--Ipcs 资源
- mac下python与redis结合
- 搭建第一个struts2框架web程序
- HHVM 是如何提升 PHP 性能的?
- Web系统大规模并发——电商秒杀与抢购
- 我在项目中Springmvc异常日志处理(二) ps:如何有更好的方法,请写到评论中多多交流,谢谢!
- 详解Oracle几种性能调优方法
- 回撤换行
- 嵌入式 死锁&活锁含义
- 企业收购并购
- DirectX--yuv420p上实现的字符叠加
- Hadoop 如何使用libhdfs.so
- MyEclipse配置tomcat
- 写了交互给后台后来不能用?bug多多多又找不到文件效率低?工作流程帮你优化起来~~~~