Spring全域性異常處理的三種方式

2021-09-09 03:36:21 字數 2910 閱讀 7811

在j2ee專案的開發中,不管是對底層的資料庫操作過程,還是業務層的處理過程,還是控制層的處理過程,都不可避免會遇到各種可預知的、不可預知的異常需要處理。每個過程都單獨處理異常,系統的**耦合度高,工作量大且不好統一,維護的工作量也很大。 那麼,能不能將所有型別的異常處理從各處理過程解耦出來,這樣既保證了相關處理過程的功能較單一,也實現了異常資訊的統一處理和維護?答案是肯定的。下面將介紹使用spring mvc統一處理異常的解決和實現過程。

實現spring的異常處理介面handlerexceptionresolver 自定義自己的異常處理器

使用@exceptionhandler註解實現異常處理

1

@configuration

2@enablewebmvc

3 @componentscan(basepackages = )

4public

class webmvcconfig extends

webmvcconfigureradapter

16 }

(二) handlerexceptionresolver

相比第一種來說,handlerexceptionresolver能準確顯示定義的異常處理頁面,達到了統一異常處理的目標

1.定義乙個類實現handlerexceptionresolver介面

1

public

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還可以處理某些註解丟擲的異常例如 ...