springboot中添加全局異常捕獲類


前幾天工作中遇到一個項目,前后端分離的,作為后端開發專注開發接口。對於程序中出現的異常如果不進行處理,將報錯信息直接返回到前端十=時不優雅的,因此需要對異常進行捕獲和處理,但是每個接口都單獨處理異常則顯得代碼十分臃腫,因此寫了個異常捕獲類對全局出現的異常進行統一處理。

1.如果程序中出現異常如下:

@RestController
public class HelloController {

    @RequestMapping("/hello")
    public String hello(String idNum) {
         
       throw new BusinessException("拋出業務異常");
        
    }
}

2.全局異常處理類:

 //@ControllerAdvice 該注解定義全局異常處理類
@ControllerAdvice
public class GlobalExceptionHandler {

    //@ExceptionHandler 該注解聲明異常處理方法
    //value=BusinessException.classb表示處理拋出的BusinessException異常
    @ExceptionHandler(value = BusinessException.class) 
    public ReturnResult defaultErrorHandler(HttpServletRequest req, Exception e) {
        ReturnResult result = new ReturnResult(); //出現異常后返回到前端的信息
       result.setCode("-1");
       result.setMsg("出現了業務異常");
       //打印異常信息
      logger.error("調用失敗", e);
       
      return result;
    }
}

3.訪問/hello資源時被2中捕獲BusinessException異常的類捕獲,並返回前端數據{"code":"-1", "message":"出現業務異常"},   日志打印信息如下:


免責聲明!

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



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