【参考文章】:Spring全局异常处理的三种方式
【参考文章】:Spring Boot 系列(八)@ControllerAdvice 拦截异常并统一处理
【参考文章】:@ControllerAdvice + @ExceptionHandler 全局处理 Controller 层异常
1. 使用注解定义 异常处理类 和 处理方法
当在 controller 中发生异常时,如果异常煤油被捕获,则自动进入该方法中进行处理并返回;
@ControllerAdvice :注解声明全局异常处理类
@ExceptionHandler:注解声明异常处理方法
如果全部异常处理返回json,那么可以使用 @RestControllerAdvice 代替 @ControllerAdvice ,这样在方法上就可以不需要添加 @ResponseBody
@RestControllerAdvice public class GlobalExceptionHandler { /** * 系统内部异常 * * @param request 请求对象 * @param response 返回信息 * @param e 异常对象 * @return 返回异常信息 */ @ExceptionHandler(Exception.class) public Object handleException(HttpServletRequest request, HttpServletResponse response, Exception e) { return new Object(); } }
2. 实现Spring的异常处理接口HandlerExceptionResolver
public class GlobalHandlerExceptionResolver implements HandlerExceptionResolver { /** * 在这里处理所有得异常信息 */ @Override public ModelAndView resolveException(HttpServletRequest req, HttpServletResponse resp, Object o, Exception ex) { return new ModelAndView(); } }