ssm框架之异常处理

匿名 (未验证) 提交于 2019-12-03 00:00:02

异常处理思路

系统中异常包括两类:预期异常和运行时异常runtimeexception,前者通过捕获异常从而获取异常信息,后者主要通过规范代码开发、测试通过手段减少运行时异常的发生。

系统的dao、service、controller出现都通过throws Exception向上抛出,最后由springMVC前端控制器交由异常处理器进行异常处理,如下图:

 

 

 springMVC提供全局异常处理器进行统一的异常处理,一个系统只有一个异常处理器

1自定义异常类

对不同的异常类型定义异常类,继承Exception

/** * Created by Alex on 2017/6/29. * 系统自定义异常类 */ public class CustomException extends Exception { //异常信息   public String message;   public CustomException(String message){     super(message);     this.message = message;   }    @Override   public String getMessage() {     return message;   }    public void setMessage(String message) {     this.message = message;   }}

2配置全局异常处理器

思路:

系统遇到异常时,在程序中手动抛出,dao抛给service,service抛给controller,最后controller抛给前端控制器,前端控制器调用全局异常处理器。

全局异常处理器处理思路:

解析异常类型,若该异常类型是系统自定义的异常,直接取出异常信息在错误页面展示即可。

如果不是系统自定义异常,构造一个系统自定义的异常类型,信息为“未知错误”

springMVC提供一个HandlerExceptionResolver

/**  * Created by Alex on 2017/6/29.  * 全局异常处理器  */ public class CustomExceptionResolver implements HandlerExceptionResolver{     /**      * 系统抛出的异常      * @param httpServletRequest      * @param httpServletResponse      * @param o      * @param e 系统抛出的异常      * @return      */     @Override     public ModelAndView resolveException(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) {        // 解析出异常类型         CustomException customException = null;         // 若该异常类型是系统自定义的异常,直接取出异常信息在错误页面展示即可。         if(e instanceof CustomException){             customException = (CustomException)e;         }else{             // 如果不是系统自定义异常,构造一个系统自定义的异常类型,信息为“未知错误”             customException = new CustomException("未知错误");         }         //错误信息         String message = customException.getMessage();         ModelAndView modelAndView = new ModelAndView();         //将错误信息传到页面         modelAndView.addObject("message",message);         //指向错误页面         modelAndView.setViewName("error");         return modelAndView;     } }

3配置错误页面

<%--   Created by IntelliJ IDEA.   User: Alex   Date: 2017/6/29   Time: 20:06   To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head>     <title>失败!</title> </head> <body> ${message} </body> </html>

4springMVC.xml中配置全局异常处理器

 <!--     全局异常处理器     只要类实现了HandlerExceptionResolver接口,就是一个全局异常处理器哦     -->     <bean class="com.alex.ssm.exception.CustomExceptionResolver"/>

注意:

系统自定义异常,建议在项目所有的功能都完成后再进行添加。

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!