爲何要捕獲異常?前端
咱們開發中,常常運行時,代碼會報錯,這時候咱們有可能拋出異常,而不是用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("全局異常,未知錯誤!"); } }}