springmvc中攔截器與springmvc全局異常處理器的問題


最近在做一個練手的小項目,

系統架構中用了springmvc的全局異常處理器,

做了系統的統一異常處理。

后來加入了springmvc的攔截器,

為了一些需求,

在攔截器中的 preHandle 方法 中拋出了系統自定義異常,

當時有有個疑惑,

就是拋出的這個異常全局異常處理器怎么處理的。

這里的全局異常處理器時通過實現HandlerExceptionResolver這個接口實現的

 

要指出的是 resolveException方法 中 handler中代表的是什么,我沒遇到這個問題之前我認為這玩意可以強轉成 HandlerMethod 對象 ,然后這個對象 獲取 Method對象

1 Method method = handlerMethod.getMethod();

然后這個 method 是系統中拋出異常的方法。

這樣理解是不正確的。

如果是這樣的話,那么我在攔截器中拋出異常的話,那么這個method應該是 preHandle,

下面做了一個實驗,

在攔截器中拋出了異常,

 

雖然是攔截器中拋出的異常,這里解析出來的method還是目標handler中的方法,

我之前理解的這個method是任何拋出異常的方法。

事實證明,理解錯了。

 


免責聲明!

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



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