在Spring MVC中可以从三个角度对异常进行处理:
- 对特定类型的异常进行处理
- 对特定类型的Controller类进行异常处理
- 全局异常处理
对特定类型的异常进行处理
对于特定类型的异常,我们可以通过给异常类添加ResponseStatus注解,在Controller类抛出此类异常时Spring MVC框架会自动将指定的相应码写入到请求的响应中。
比如如果有一个异常表示没有查询到订单:
|
|
在某个Controller中抛出了该异常:
|
|
那么当请求的订单ID不存的时候,请求的响应验证码就是404
单个Controller类中的异常处理
在单个Controller类中,我们可以单独定义一个方法,并使用ExceptionHandler注解标注该方法,那么此Contrller类中如果有请求抛出特定异常时将由改方法来处理。代码示例如下:
|
|
全局异常处理
在很多情况下,我们可能想要对所有Controller抛出的异常做统一的处理,在这种情况下,我们可以充分利用Spring提供的切面功能,在Spring MVC中我们可以通过简单的ControllerAdvice注解达到目的。代码示例如下:
通过上面的代码,所有Controller抛出的DataIntegrityViolationException异常都讲集中进行处理。