統一異常處理

2021-08-14 14:14:09 字數 2079 閱讀 1237

為什麼需要做統一異常處理:

因為如果不做統一處理,返回與前端的資料會非常亂,前端不好處理;並且不做統一處理,controller層就要寫很多的重複**。

統一格式:

}

實現步驟:

新建result物件——也就是請求返回的整體物件,包括code,msg,data

public class result

public void setcode(integer code)

public string getmsg()

public void setmsg(string msg)

public t getdata()

public void setdata(t data)

}

2.增加resultutil方法,封裝設定result資料的操作

/**

* @author qi.zhang

* 類說明:為避免controller層重複的set操作,遂新增resultutil

*/public class resultutil

//成功,沒有返回值

public static result success()

//失敗

public static result error(integer code , string errormsg)

}

3.統一異常處理

/**

* * @author qi.zhang

* 類說明:統一異常處理

* service拋異常到controller,controller繼續拋異常

* 最終異常被這裡捕獲

* 我們讓異常資訊變成符合result規範的資料格式

*/@controlleradvice

public class exceptionhandle

}

4.使用列舉統一管理異常資訊(是必要的)

/**

* @author qi.zhang

* 類說明:使用列舉統一維護資訊

*/public enum resultenum

public integer getcode()

public string getmsg()

}

5.區分系統異常以及自定義異常捕獲

注意:自定義異常需要 extends runtimeexception;

原因:spring只對runtimeexception才進行事物回滾,exception不管的

/**

* @author qi.zhang

* 類說明:自定義異常

*/public class myexception extends runtimeexception

//從列舉中獲取定義好的資訊

public myexception(resultenum e)

public integer getcode()

public void setcode(integer code)

}

/**

* * @author qi.zhang

* 類說明:統一異常處理

* service拋異常到controller,controller繼續拋異常

* 最終異常被這裡捕獲

* 我們讓異常資訊變成符合result規範的資料格式

*/@controlleradvice

public class exceptionhandler

logger.error("系統異常{}",e);

return resultutil.error(10001, e.getmessage());

}}

使用

public string gethealthleveldata()

統一異常處理

1,建立統一異常處理類package com.xindong.common.handler 統一異常處理類 controlleradvice public class globalexceptionhandler exceptionhandler badsqlgrammarexception.cla...

統一異常處理

controlleradvice 用於捕獲全域性異常 exceptionhandler 傳入指定異常類 controlleradvice public class globalexceptionhandler 指定什麼異常執行該方法 exception 所有異常 exceptionhandler a...

統一異常處理

spring boot提供了乙個預設的對映 error,當處理中丟擲異常之後,會轉到該請求中處理,並且該請求有乙個全域性的錯誤頁面用來展示異常內容。如下 通過 controlleradvice和 exceptionhandler實現處理controller層的異常 controlleradvice ...