美文网首页
SpringMVC统一异常处理

SpringMVC统一异常处理

作者: 雨夏_ | 来源:发表于2019-01-12 10:36 被阅读8次

原理

Spring MVC把请求映射和处理过程放到try catch中,捕获到异常后,使用异常处理bean进行处理。所有异常处理bean按照order属性排序,在处理过程中,遇到第一个成功处理异常的异常处理bean之后,不再调用后续的异常处理bean。

实现方式

  • 使用 @ ExceptionHandler 注解
  • 实现 HandlerExceptionResolver 接口
  • 使用 @controlleradvice 注解

介绍其中一种:实现 HandlerExceptionResolver 接口

//AbstractHandlerExceptionResolver实现了HandlerExceptionResolver 
public class WebExceptionHandlerResolver extends AbstractHandlerExceptionResolver {
    @Override
    protected ModelAndView doResolveException(HttpServletRequest request, HttpServletResponse response,
            @Nullable Object handler, Exception ex) {
        //这个WebExceptionView是自己定义的一个View,实现了view接口
        //可以自己根据需求去定义一个
        WebExceptionView view = new WebExceptionView(ex, handler);
        return new ModelAndView(view);
    }
} 

这里通过配置的方式加入这个异常处理器,也可以通过注解的方式

@Component
public class WebMvcConfig implements WebMvcConfigurer {
    @Override
    public void configureHandlerExceptionResolvers(List<HandlerExceptionResolver> resolvers) {
        resolvers.add(new WebExceptionHandlerResolver());
    }
}

相关文章

网友评论

      本文标题:SpringMVC统一异常处理

      本文链接:https://www.haomeiwen.com/subject/htvqdqtx.html