Spring 異常處理之全域性處理

2021-08-18 05:42:30 字數 2001 閱讀 9990

承接上文spring異常處理之本地處理,本文介紹spring異常處理的第三種方式,也就是全域性處理。為什麼將該方式取名為全域性處理,其實很簡單,因為該方式本質上和本地處理是一樣的,無非就是本地處理將異常處理方法或者說異常處理邏輯直接寫在controller中,而全域性處理其實就是把本地處理中的異常處理方法抽取出來,放到乙個地方集中管理。

/**

* 結合 globalexceptionhandlercontrolleradvice 使用

*/@controller

public class withoutexceptionhandlercontroller

/*** simulates a database exception by always throwing sqlexception. must be caught by an

* exception handler.

** @return nothing - it always throws the exception.

* @throws sqlexception always thrown.

*/public string throwsqlexception() throws sqlexception

/*** always throws a supportinfoexception. must be caught by an exception handler.

** @return nothing - it always throws the exception.

*/public string throwcustomexception()

}

/**

* 結合 withoutexceptionhandlercontroller 使用

* * 對比 exceptionhandlercontroller 可以發現,其實這個全域性異常處理就是通過使用 controlleradvice 註解將 exceptionhandler

* * 從 controller 中提取出來集中到一處

*/@controlleradvice

public class globalexceptionhandlercontrolleradvice

/*** 異常處理之使用 @controlleradvice 之二 | 指定了 view

** @param exception 異常物件

* @return 檢視名稱

*/@exceptionhandler()

public string databaseerror(exception exception)

/*** 異常處理之使用 @controlleradvice 之三 | 完全控制 - model 、view 、有用的異常資訊

** @param req 當前的 http 請求物件.

* @param exception 丟擲的異常 - 也就是 .

* @return 模型和檢視

* @throws exception 異常

到這裡為止,三種異常處理的方式就介紹完了。其實我們可以看出來,本地處理和全域性處理其實是一樣的。關於到底使用哪種方式更合適呢,個人認為第三種是最合適的,因為第一種需要繫結http狀態碼,第二種將異常處理邏輯直接寫在controller中,導致業務**和異常處理**混在一起,第三種明顯靈活的多。

spring 異常處理之http狀態碼

spring 異常處理之本地處理

spring 異常處理之全域性處理

spring rest 異常處理之本地處理

spring rest 異常處理之全域性處理

Spring 全域性異常處理

1 描述 在j2ee專案的開發中,不管是對底層的資料庫操作過程,還是業務層的處理過程,還是控制層的處理過程,都不可避免會遇到各種可預知的 不可預知的異常需要處理。每個過程都單獨處理異常,系統的 耦合度高,工作量大且不好統一,維護的工作量也很大。那麼,能不能將所有型別的異常處理從各處理過程解耦出來,這...

筆記之spring全域性異常處理

使用 controlleradvice exceptionhandler 進行全域性的 controller 層異常處理,只要設計得當,就再也不用在 controller 層進行 try catch 了!而且,validated 校驗器註解的異常,也可以一起處理,無需手動判斷繫結校驗結果 bindi...

Spring中全域性異常處理

1 首先我們編寫乙個全域性異常處理的類exceptionhandle,然後再類上加上註解 controlleradvice controlleradvice可以選擇要處理異常的包例如 controlleradvice com.ldd.controlleradvice還可以處理某些註解丟擲的異常例如 ...