在一个Spring MVC项目中,使用统一异常处理,可以使维护代码变得容易。下面总结一下常用的3种方法。
实现HandlerExceptionResolver
接口
实现HandlerExceptionResolver
接口,实现resolveException()
方法,根据传入的异常类型做出处理。
继承AbstractHandlerExceptionResolver
类
继承AbstractHandlerExceptionResolver
类,和第一种方式类似,因为AbstractHandlerExceptionResolver
实现了HandlerExceptionResolver
接口。
所以,我们继承之后也是重写resolveException()
方法,再处理各种异常。
使用注解@ControllerAdvice
处理
推荐使用这种方法,比较直观。下面上代码:
首先是自定义异常类
然后是全局异常统一处理类:
添加@ControllerAdvice
注解的类是集中处理异常的地方,可以同时存在多个这样的类,用来做更细粒度的划分。
在这个类中,我们可以对每一种异常编写一种处理逻辑,在方法上使用@ExceptionHandler
注解修饰,传入指定的异常类型即可。
如果是RESTful风格,不返回视图,也可使用@RestControllerAdvice
。