springboot2.x如何配置全局自定義異常

爲何要捕獲異常?前端


 

咱們開發中,常常運行時,代碼會報錯,這時候咱們有可能拋出異常,而不是用try..catch來解決.並且如今先後端分離,若是不捕獲異常的話,前端那邊的人估計會被報的錯搞得焦頭爛額的.spring

 

springboot2.x是怎麼自定義異常的?怎麼捕獲異常的?json


咱們自定義異常類,須要繼承一個RuntimeException父類,而且包裝好本身的異常類,通常是包裝code(錯誤碼),msg(錯誤信息).後端

 

/**
* 自定義異常類
*/
public class TestException extends RuntimeException{

Integer code;
String msg;

public TestException(Integer code, String msg) {
super(msg);
this.code = code;
this.msg = msg;
}

public Integer getCode() {
return code;
}

public void setCode(Integer code) {
this.code = code;
}

public String getMsg() {
return msg;
}

public void setMsg(String msg) {
this.msg = msg;
}
}


接着咱們須要建立一個異常處理器,這裏是來捕獲異常的.
/** * 異常處理控制器 */@ControllerAdvicepublic class TestExceptionHandler {    @ExceptionHandler(value = Exception.class) //通常是捕獲最高級的exception類,或者你想捕獲單獨的一個異常類(好比咱們前面建立的TestException,不過推薦這種,相對簡潔)    @ResponseBody //返回數據以json數據傳輸    public JsonData Handler(Exception e){ //jsonData是我自定義的一個包裝類,主要用於傳輸給前端的數據        if(e instanceof TestException){ //判斷異常類型            TestException testException = (TestException) e;             return JsonData.buildError(testException.getMsg(),testException.getCode());        }else{            return JsonData.buildError("全局異常,未知錯誤!");        }    }}
相關文章
相關標籤/搜索