Springboot項目全局異常統一處理


1. 以前SpringMVC中的異常處理

import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
//SpringMVC全局異常處理器,如果要使用這個異常處理器,需要實例化
public class handlerException implements HandlerExceptionResolver {
    //返回的ModelAndView,如果有異常,就給用戶一個頁面地提示
    
    @Override
    public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {

        //進行異常處理


        //自定義異常,運行時異常(系統異常,例如數據庫連接失敗)

        //把異常通知給相關人員(短信,郵件)

        //需要給用戶一個友好的提示

        return null;
    }
}

2. 在SpringBoot中的

   基於@ControllerAdvice注解的全局異常統一處理只能針對於Controller層的異常,意思是只能捕獲到Controller層的異常,在service層或者其他層面的異常都不能捕獲。

  (一)自定義異常:

 

/**
 * 自定義異常
 */
public class RRException extends RuntimeException {
    private static final long serialVersionUID = 1L;

    private String msg;
    private int code = 500;

    public RRException(String msg) {
        super(msg);
        this.msg = msg;
    }

    public RRException(String msg, Throwable e) {
        super(msg, e);
        this.msg = msg;
    }

}

    (二)統一全局異常處理

  

/**
 * @Description: 統一異常處理類
 * @Author: xuxiaoyu
 * @Create: 2019-11-17 10:48
 */
@ControllerAdvice
public class BaseExceptionHandler {
    @ExceptionHandler(value = Exception.class)
    @ResponseBody
    public Result error(Exception e){
          e.printStackTrace();
          return new Result(false, StatusCode.ERROR,e.getMessage());
    }
.............
.............
............. }

 

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM