Springboot專案統一異常處理

2021-09-24 15:31:37 字數 2604 閱讀 7767

二.定義全域性異常類

三.定義異常處理類

四.特殊處理404異常

五.測試使用效果

基於目前大多數專案都採用前後端分離架構,所以後端介面統一返回值封裝是比較重要的,便於前後端對接與統一處理。當然按各自專案約定實現即可,思路大同小異,下面是我的實現方式,僅供參考

/**

* @filename result

* * @description 通用返回結果封裝

* * @author llspace

* @version 1.0

* @since 2019/6/17 11:55

**/@data

public class result

/*** 失敗時候的呼叫

*/public static resulterror(codemsg cm)

private result(t data)

private result(codemsg cm)

this.code = cm.getcode();

this.msg = cm.getmsg();}}

/**

* @filename codemsg

* * @description 通用狀態碼和訊息封裝

* * @author llspace

* @version 1.0

* @since 2019/6/17 11:57

**/@data

public class codemsg

public codemsg fillargs(object... args)

}

基於上面封裝的codemsg實現globalexception定義,異常繼承runtimeexception

/**

* @filename globalexception

* * @description 全域性異常資訊

* * @author llspace

* @version 1.0

* @since 2019/6/20 18:05

**/@data

public class globalexception extends runtimeexception

}

@restcontrolleradvice作用等同於@responsebody加上@controlleradvice,會在所有帶有@controller或者@restcontroller註解的類上生效,還可以使用basepackages引數配置指定異常處理類生效的包

/**

* @filename globalexceptionhandler

* * @description 全域性異常處理類

* * @author llspace

* @version 1.0

* @since 2019/6/20 18:07

**/@restcontrolleradvice

public class globalexceptionhandler else if(e instanceof bindexception) else }}

spring boot預設不會丟擲404異常(nohandlerfoundexception),所以在controlleradvice中捕獲不到該異常,導致404總是跳過contolleradvice,直接顯示errorcontroller的錯誤頁。需要改變配置,讓404錯誤丟擲異常(nohandlerfoundexception),這樣便可在controlleradvice中捕獲此異常。

spring:

mvc:

throw-exception-if-no-handler-found: true

resources:

如果是帶靜態資源的專案我們要如何來處理404異常呢?

斷點下basicerrorcontroller類,檢視下原始碼可知,errorhtml()方法缺省會返回乙個new modelandview(「error」, model),所以其實在classpath:/templates下自定義乙個error.html即可,這樣springboot預設的404錯誤就跳轉到了自己專案下的error頁面了,這種處理比較簡單,如果想更好的封裝錯誤頁面,建議自己實現errorcontroller介面,或者繼承abstracterrorcontroller / basicerrorcontroller類來實現,當然前提是刪除掉配置檔案中上述的兩個配置

至此,統一異常處理就實現了,如下使用,

if(loginvo == null)
這樣會丟擲異常如下:

globalexception(codemsg=codemsg(code=500100, msg=服務端異常))

如果是404異常會跳專案自定義的error頁面

個人實現,僅供參考,有興趣的小夥伴自己動手嘗試吧!

Spring Boot中Web應用的統一異常處理

我們在做web應用的時候,請求處理過程中發生錯誤是非常常見的情況。spring boot提供了乙個預設的對映 error,當處理中丟擲異常之後,會轉到該請求中處理,並且該請求有乙個全域性的錯誤頁面用來展示異常內容。如圖 雖然,spring boot中實現了預設的error對映,但是在實際應用中,上面...

Spring Boot中Web應用的統一異常處理

我們在做web應用的時候,請求處理過程中發生錯誤是非常常見的情況。spring boot提供了乙個預設的對映 error,當處理中丟擲異常之後,會轉到該請求中處理,並且該請求有乙個全域性的錯誤頁面用來展示異常內容。選擇乙個之前實現過的web應用 chapter3 1 2 為基礎,啟動該應用,訪問乙個...

Spring Boot中Web應用的統一異常處理

我們在做web應用的時候,請求處理過程中發生錯誤是非常常見的情況。spring boot提供了乙個預設的對映 error,當處理中丟擲異常之後,會轉到該請求中處理,並且該請求有乙個全域性的錯誤頁面用來展示異常內容。選擇乙個之前實現過的web應用 chapter3 1 2 為基礎,啟動該應用,訪問乙個...