Spring MVC异常处理总结

2018-09-21  本文已影响27人  昙花未现

Spring MVC异常处理有三种方案:

1.使用@ExceptionHandler注解。

public class AccountController {

      @ExceptionHandler

      public void handleException() {}

}

@ExceptionHandler是Controller级别的,不是整个应用程序全局有效。给每个controller添加对应的@ExceptionHandler方法会很繁琐。可以让所有Controller类继承BaseController类,在BaseController类里面添加@ExceptionHandler修饰的方法进行异常处理。

2. 使用HandlerExceptionResolver可以实现一个统一的异常处理机制。Spring提供了以下HandlerExceptionResolver可以使用:

ExceptionHandlerExceptionResolver是@ExceptionHandler机制工作的核心组件。

DefaultHandlerExceptionResolver用于将标准的Spring异常解析为相应的http状态码。

ResponseStatusExceptionResolver主要用于把修饰自定义异常的@ResponseStatus注解映射对应异常到相应的http状态码。

SimpleMappingExceptionResolver和AnnotationMethodHandlerExceptionResolver

自定义 HandlerExceptionResolver可以返回一个ModelAndView对象,可以设置需要的任何内容。

3. 新的@ControllerAdvice提供了一个全局的@ExceptionHandler 异常处理机制。

@ControllerAdvice

public class ExceptionHandler {

                        @ExceptionHandler(Exception.class)

public Result handleException(Exception e)  {

    // todo

  }

}

@ControllerAdvice允许把分散在多个Controller的@ExceptionHandler合并到单个全局错误处理组件中。

上一篇 下一篇

猜你喜欢

热点阅读