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