網上找了很多資料,說什么原因的都有,試了半天
后來才發現,是自己加了log的aop切面,所以exception半路就被劫道了!!!
問題出在下面這端注釋的代碼中
可以看到我用try catch 對proceed方法進行包裹,一旦目標方法異常,catch就會被這里捕捉到並拋出異常處理掉,所以無法向上拋出,更無法到達@ControllerAdvice的全局異常處理器中!
@Around("webLog()")
public Object arround(ProceedingJoinPoint pjp) throws Throwable {
// try {
// Object o = pjp.proceed();
// return o;
// } catch (Throwable e) {
// e.printStackTrace();
// return null;
// }
Object o = pjp.proceed();
return o;
}
根本原因請看下面這張圖: