在j2ee專案的開發中,不管是對底層的資料庫操作過程,還是業務層的處理過程,還是控制層的處理過程,都不可避免會遇到各種可預知的、不可預知的異常需要處理。每個過程都單獨處理異常,系統的**耦合度高,工作量大且不好統一,維護的工作量也很大。 那麼,能不能將所有型別的異常處理從各處理過程解耦出來,這樣既保證了相關處理過程的功能較單一,也實現了異常資訊的統一處理和維護?答案是肯定的。下面將介紹使用spring mvc統一處理異常的解決和實現過程。
實現spring的異常處理介面handlerexceptionresolver 自定義自己的異常處理器
使用@exceptionhandler註解實現異常處理
1@configuration
2@enablewebmvc
3 @componentscan(basepackages = )
4public
class webmvcconfig extends
webmvcconfigureradapter
16 }
(二) handlerexceptionresolver
相比第一種來說,handlerexceptionresolver能準確顯示定義的異常處理頁面,達到了統一異常處理的目標
1.定義乙個類實現handlerexceptionresolver介面
1public
class globalhandlerexceptionresolver implements
handlerexceptionresolver
15//
rspmsg為乙個自定義處理異常資訊的類
16//
responsecode為乙個自定義錯誤碼的介面
17 rspmsg unknownexception = null
;
18if (ex instanceof
nullpointerexception) else
22printwrite(unknownexception.tostring(), resp);
23return
newmodelandview();
24}
2526
/**27
* 將錯誤資訊新增到response中
這種方式實現的異常處理,可以針對不同的異常和自己定義的異常碼進行翻譯,然後輸出到response中,在前端展示。
(三)@exceptionhandler
1.首先定義乙個父類,實現一些基礎的方法
2.針對你需要捕捉的異常實現相對應的處理方式
1@controlleradvice
2public
class globalexceptionhandler extends
baseglobalexceptionhandler
1011
//500的異常會被這個方法捕獲
//todo 你也可以再寫乙個方法來捕獲你的自定義異常
19//
try now!!!
2021
@override
22public
logger getlogger()
2526 }
Spring 全域性異常處理
1 描述 在j2ee專案的開發中,不管是對底層的資料庫操作過程,還是業務層的處理過程,還是控制層的處理過程,都不可避免會遇到各種可預知的 不可預知的異常需要處理。每個過程都單獨處理異常,系統的 耦合度高,工作量大且不好統一,維護的工作量也很大。那麼,能不能將所有型別的異常處理從各處理過程解耦出來,這...
Spring 異常處理之全域性處理
承接上文spring異常處理之本地處理,本文介紹spring異常處理的第三種方式,也就是全域性處理。為什麼將該方式取名為全域性處理,其實很簡單,因為該方式本質上和本地處理是一樣的,無非就是本地處理將異常處理方法或者說異常處理邏輯直接寫在controller中,而全域性處理其實就是把本地處理中的異常處...
Spring中全域性異常處理
1 首先我們編寫乙個全域性異常處理的類exceptionhandle,然後再類上加上註解 controlleradvice controlleradvice可以選擇要處理異常的包例如 controlleradvice com.ldd.controlleradvice還可以處理某些註解丟擲的異常例如 ...