說明:
在后端編寫業務邏輯時,可能會遇到異常拋出處理的情況,后端通常會通過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,然后沒有扔出來。常見的就是切面的環繞處理,捕獲了異常忘記拋出來。
本人的問題:使用切面的環繞處理,記錄日志,日志分為成功、失敗、異常,所有將異常捕獲處理了。
解決辦法:捕獲異常之后,然后再將異常拋出來就可以了。
原文鏈接:http://www.leftso.com/blog/430.html
特此記錄下,以便后續查看