Springboot自定義異常處理

2021-07-12 06:04:57 字數 3211 閱讀 2662

springboot 預設把異常的處理集中到乙個modelandview中了,但專案的實際過程中,這樣做,並不能滿足我們的要求。具體的自定義異常的處理,參看以下

spring boot異常處理詳解

如果仔細看完spring boot的異常處理詳解,並且研究過原始碼後,我覺得具體的實現可以不用看了。。。

重寫定義錯誤頁面的url,預設只有乙個/error

@bean

public embeddedservletcontainercustomizer containercustomizer()

};}

重寫通過實現errorcontroller,重寫basicerrorcontroller的功能實現

**

* 重寫basicerrorcontroller,主要負責系統的異常頁面的處理以及錯誤資訊的顯示

* @see org.springframework.boot.autoconfigure.web.basicerrorcontroller

* @see org.springframework.boot.autoconfigure.web.errormvcautoconfiguration

* * @author jonathan

* @version

2016/5/31

11:22

* @since jdk 7.0+

*/@controller

@enableconfigurationproperties()

public

class

exceptioncontroller

implements

errorcontroller

/*** 定義404的modelandview

/*** 定義404的json資料

/*** 定義500的modelandview

/*** 定義500的錯誤json資訊

* 獲取錯誤的資訊

/*** 是否包含trace

* 獲取錯誤編碼

* 實現錯誤路徑,暫時無用

*@see exceptionmvcautoconfiguration#containercustomizer()

*@return

*/@override

public string geterrorpath()

}

第一步,通過定義containercustomizer,重寫定義了異常處理對應的檢視。目前定義了404和500,可以繼續擴充套件。

第二步,重寫basicerrorcontroller,當然可以直接定義乙個普通的controller類,直接實現第一步定義的檢視的方法。重寫的目的是重用errorattributes。這樣在頁面,直接可以獲取到status,message,exception,trace等內容。

如果僅僅是把異常處理的檢視作為靜態頁面,不需要看到異常資訊內容的話,直接第一步後,再定義error/404,error/500等靜態檢視即可。

errorcontroller根據accept頭的內容,輸出不同格式的錯誤響應。比如針對瀏覽器的請求生成html頁面,針對其它請求生成json格式的返回

以上兩步的操作,比網上流傳的更能實現自定義化。

Springboot自定義異常處理

springboot 預設把異常的處理集中到乙個modelandview中了,但專案的實際過程中,這樣做,並不能滿足我們的要求。具體的自定義異常的處理,參看以下 spring boot異常處理詳解 如果仔細看完spring boot的異常處理詳解,並且研究過原始碼後,我覺得具體的實現可以不用看了。重...

SpringBoot異常處理及自定義異常頁面

springboot預設情況下對於異常的處理提供了預設的錯誤頁面,如果我們想要自定義屬於自己的異常頁面同時自己來處理不同型別的異常 到不同的頁面,可以進行相關的配置。在template目錄下建立乙個名為error的目錄,目錄名必須是error,這樣專案啟動springboot就會自動找到該目錄下的錯...

springboot日記之自定義異常

一直以來我就是想統一下異常,覺得程式中到處拋異常時真的煩惱,通過一中午簡單了解,終於做出了乙個簡單的版本。package learn.until import learn.until.staticdata.restcode import lombok.data import lombok.equal...