Spring 全局异常处理

【参考文章】: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();   
   }  

}
原文地址:https://www.cnblogs.com/virgosnail/p/10044417.html