我認為,採用預先約定好的資料格式,將返回資料(無論是正常的還是異常的)規範起來,有助於提高團隊間介面對接的效率(前端和後端,後端和後端等).##思路
##實現
###1.建立errorresult類
public
class
errorresult
implements
serializable
###2.建立restresponse類
使用泛型,來適應不同型別的結果集
響應**和響應描述,可自定義列舉來規範
注意,一定有留有無參的建構函式,否則json轉換會報錯
public
class
restresponse
<
t>
implements
serializable
//建構函式
public
restresponse
(errorcode errorcode, errorresult error)
........省略
}
###3.自定義異常
檢查型異常
public
class
systemexception
extends
exception
執行時異常
public
class
systemruntimeexception
extends
runtimeexception
其他型別異常,如:認證異常,許可權異常,引數校驗異常,等等,按需定義
public
class
authexception
extends
runtimeexception
@controlleradvice
public
class
定義私有的方法構造errorresult
private
errorresult builderror
(exception
exception)
按照異常型別,攔截處理異常,攔截的優先順序遵循類的整合關係,優先攔截子類異常
@exceptionhandler
(value = 要攔截的異常.class)
@responsestatus
(響應狀態)
@responsebody
public restresponseexception
(要攔截的異常 exception)
這裡提醒注意點,如果想要攔截404錯誤的話,需要在spring boot中做如下設定
spring.mvc.throw-exception-if-no-handler-found=true
##結束
然後相關思路和原則,大家可自行搜尋契約優先
,由於本身不想在文章中引入太多教條性的東西,主要都是以解決問題的思路為主,所以不深入討論.
日誌說明以及格式統一規範
fatal error warn info debug trace,級別越高儲存優先順序越高,原則上對於error及以上級別的日誌永久保留,對於此級別以下的,級別越高保留時間越長。request response 系統操作行為 讀寫檔案 定時任務等 不符合業務邏輯預期 列印關鍵的引數,要能從這些引數...
統一異常處理
為什麼需要做統一異常處理 因為如果不做統一處理,返回與前端的資料會非常亂,前端不好處理 並且不做統一處理,controller層就要寫很多的重複 統一格式 實現步驟 新建result物件 也就是請求返回的整體物件,包括code,msg,data public class result public ...
統一異常處理
1,建立統一異常處理類package com.xindong.common.handler 統一異常處理類 controlleradvice public class globalexceptionhandler exceptionhandler badsqlgrammarexception.cla...