SpringMVC的异常处理

一、SpringMVC异常处理的思路

系统的Dao、Service、Controller层的异常都通过throws Exception向上抛出,
最后由SpringMVC前端控制器交给异常处理器进行处理。

SpringMVC的异常处理主要有两种方式:

  • 使用SpringMVC提供的简单异常处理器SimpleMappingExceptionResolver
  • 实现SpringMVC的异常处理结构HandlerExceptionResolver自定义一个异常处理器

二、简单异常处理器SimpleMappingExceptionResolver

这个处理器需要在spring-mvc.xml中配置,它的功能是将各种异常类型映射到相应的错误页面
(由于我已经配置过内部资源视图解析器,所以图中的error1和error2会分别解析成/error1.jsp和/error2.jsp)
SpringMVC的异常处理

三、实现HandlerExceptionResolver接口自定义异常处理器

1.实现这个接口的resolveException()方法,

这里面有一个重要的参数ex和重要的返回值,在这个方法中根据具体的业务去处理各种类型的异常:

public class MyExceptionResolver implements HandlerExceptionResolver {
    @Override
    // 参数Exception ex是报异常的异常对象,返回值ModelAndView就是要跳转的错误视图的信息
    public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
        ModelAndView modelAndView = new ModelAndView();
        if(ex instanceof MyException){
            modelAndView.addObject("info", "自定义的异常");
        }else if (ex instanceof ClassCastException){
            modelAndView.addObject("info", "类转换异常");
        }
        modelAndView.setViewName("error");
        return modelAndView;
    }
}
2.自定义的异常处理器也需要在spring-mvc.xml中配置:
   <!--自定义异常处理器-->
   <bean class="com.lxl.controller.resolver.MyExceptionResolver"/>
上一篇:阿里一面:讲一讲 Spring、SpringMVC、SpringBoot、SpringCloud 之间的关系


下一篇:SpringMVC获取参数方式