SpringBoot 全域性異常配置

2022-01-20 12:54:34 字數 1458 閱讀 8038

在日常web開發中發生了異常,往往是需要通過乙個統一的異常處理來保證客戶端能夠收到友好的提示。

一、預設異常機制

預設異常處理(springboot 預設提供了兩種機制,一種是針對於web瀏覽器訪問的錯誤頁面響應,另一種則是針對於 介面測試工具等 的引數響應處理):

原理:springboot預設提供了程式出錯的結果對映路徑/error。這個/error請求會在basicerrorcontroller中處理,其內部是通過判斷請求頭中的accept的內容是否為text/html來區分請求是來自客戶端瀏覽器(瀏覽器通常預設自動傳送請求頭內容accept:text/html)還是客戶端介面的呼叫,以此來決定返回頁面檢視還是 json 訊息內容。

二、自定義json格式異常響應

通過 @controlleradvice/@restcontrolleradvice 和 @exceptionhandler 註解全域性異常自定義響應類

首先定義響應狀態碼列舉類

public enum resultcode 

public int code()

}

定義 響應類

public class result 

public int getcode()

public boolean issuccess()

public result setsuccess(boolean success)

public string getmessage()

public result setmessage(string message)

public object getdata()

public result setdata(object data)

}

對響應結果封裝,做預處理

public class resultgenerator 

public static result gensuccessresult(object data)

public static result genfailresult(string message)

}

異常處理類

@restcontrolleradvice

public class exceptioncontrolleradvice

}

三、自定義異常處理頁面

在templates下新建error.html頁面

做錯誤頁面異常處理 返回 modelandview

@exceptionhandler(exception.class)

public object handleexception(exception e)

SpringBoot 全域性異常攔截和日誌配置

作用 springboot中不用關心異常,不用顯示的進行try catch,美觀,正解 擴充套件 可以加到類上,也可以加到類的方法上 關於 的幾點說明 中的 data註解是應用了lombok,需要的話匯入下,也可以刪除註解,自己生成get set和構造方法 json格式化工具用的是fastjson ...

全域性異常處理 springBoot 全域性異常處理

先讚後看,月入百萬 springboot開發的web專案中,強調分層的概念,乙個完整的專案一般會劃分出controller層和service層。因此,為了 的可維護性,controller層 應該盡量簡潔,驗證一下引數,直接丟給service層處理即可 異常處理的方式無外乎兩種 在springboo...

springboot全域性異常捕獲

新專案中需要用到檔案上傳,有需要對上傳檔案大小進行限制,當檔案超過限制的時候,springboot框架會直接丟擲異常,不會進入你的方法中,當我們需要向前臺返回資訊的時候也無從返回,只能進行全域性捕獲檔案過大的異常,然後再返回資訊。controlleradvice public class mycon...