二.定義全域性異常類
三.定義異常處理類
四.特殊處理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 為基礎,啟動該應用,訪問乙個...