Spring Boot 系列 - @ControllerAdvice & 拦截异常并统一处理
时间: 2023-08-02 16:22:53 浏览: 100
Spring Boot处理全局统一异常的两种方法与区别
@ControllerAdvice 是 Spring MVC 提供的注解,用于统一处理 Controller 层抛出的异常。通过 @ControllerAdvice 注解,可以将对于控制器的全局配置放在同一个位置。而不是在每个 Controller 中逐个定义。
以下是使用 @ControllerAdvice 进行全局异常处理的示例代码:
```java
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(value = Exception.class)
public ModelAndView defaultErrorHandler(HttpServletRequest req, Exception e) throws Exception {
ModelAndView mav = new ModelAndView();
mav.addObject("exception", e);
mav.addObject("url", req.getRequestURL());
mav.setViewName("error");
return mav;
}
}
```
在上述代码中,@ExceptionHandler 注解用来指定处理哪种异常类型,这里我们处理的是 Exception 类型的异常,也就是所有异常类型的父类。defaultErrorHandler 方法用来处理异常,将异常信息添加到 ModelAndView 中,然后返回一个错误页面。
在实际项目中,我们可以根据实际需求进行定制化的异常处理。比如在返回 JSON 数据时,可以返回一个固定格式的错误信息,而不是返回一个错误页面。
总之,@ControllerAdvice 注解可以帮助我们统一处理控制器层抛出的异常,提升代码的可读性和可维护性。
阅读全文