为什么要特别关注异常的处理
- 后端出现异常时前端以及其他调用方无法得知出现了什么异常,无法进行相应的处理
- 后端内部,每一层都可能出现异常,需要一个统一处理的方式:统一抛出到表现层处理
- springMVC内置了异常处理方法:异常处理器
异常处理器
关键注解
- @ControllerAdvice:异常处理器
- @RestControllerAdvice:异常处理器 rest开发风格下的异常处理器
- @ExceptionHandler(exception.class):异常处理方法,声明该方法拦截的异常类型
- @ResponseStatus 注解用于为 HTTP 响应指定状态码。在处理异常时,您可以将此注解添加到异常类上,以便自动为抛出的异常设置对应的 HTTP 状态码
原理
- SpringMVC中的异常处理器是基于AOP实现的,AOP可以把异常处理器织入到Controller中,代码层面看起来就好像把异常处理抽出,放到一个通知类中统一处理