Springboot項目中使用@RestControllerAdvice註解不生效排查思路
- 2021 年 4 月 22 日
- 筆記
- spring-boot, 常見問題
說明:
在後端編寫業務邏輯時,可能會遇到異常拋出處理的情況,後端通常會通過throw出一個異常,然後通過@RestControllerAdvice註解標註自定義類進行統一處理,前端再將接收到的結果解析。
異常處理類
@RestControllerAdvice
@Slf4j
public class GlobalExceptionHandler {
/**
* 基礎異常
*/
@ExceptionHandler(BaseException.class)
public ResultVo baseException(BaseException e) {
log.error("base exception: {}", e.getMessage());
return ResultVo.error(e.getMessage());
}
}
排查思路
- 檢查異常處理類是否被Spring管理,@SpringbootApplication默認掃描本包和子包;如果為掃描到,使用@SpringbootApplication(scanBasePackages=”xxx.xxx”)
- 檢查項目中的切面編程,查看是否在某個切面將異常try-catch,然後沒有扔出來。常見的就是切面的環繞處理,捕獲了異常忘記拋出來。
本人的問題:使用切面的環繞處理,記錄日誌,日誌分為成功、失敗、異常,所有將異常捕獲處理了。
解決辦法:捕獲異常之後,然後再將異常拋出來就可以了。
原文鏈接://www.leftso.com/blog/430.html
特此記錄下,以便後續查看