示例**在
先來看這樣乙個介面:
@restcontroller
public class indexaction
}
思考:呼叫該介面時,如果a和b中,有乙個為null,會發生什麼?
網頁端:
這是乙個非常討人厭的情況:呼叫者如何處理這種未知狀況呢?通過http請求code來判定?
不如由被呼叫者來處理這種問題!
通過@controlleradvice和@exceptionhandler,可以自定義對全部controller介面的異常處理機制!
@controlleradvice
public class controllerhandler
}
重新測試:
上面我們定義了全域性的異常處理,將所有異常的格式都統一了。
如果需要針對不同異常進行不同的處理呢?甚至對乙個自定義的異常進行單獨的處理呢?這是乙個常見的請求。
我們定義乙個usernotexistexception異常,新增測試介面:
@restcontroller
public class indexaction
return new jsonresult(true, "暫未實現使用者查詢功能");}}
自定義的異常:
public class usernotexistexception extends exception
public integer getid()
public void setid(integer id)
@override
public string tostring()
}
未新增任何異常處理機制時,測試:
下面新增usernotexistexception異常的統一處理:
@controlleradvice
public class controllerhandler
/*** 處理usernotexistexception異常
}
測試:
再測試一下之前空指標異常:
經過測試,被要求單獨處理的異常會先被處理,而後其他異常會被exception(預設形式)的處理方法捕獲。
個人**:
github:
Spring Boot學習筆記8 統一異常處理
雖然,spring boot中實現了預設的error對映,但是在實際應用中,預設的錯誤頁面對使用者來說並不夠友好,我們通常需要去實現我們自己的異常提示。下面我們以之前的spring bootx學習筆記7 使用thymeleaf模板引擎渲染web檢視為基礎,進行統一異常處理的改造。public cla...
spring boot統一異常處理
1 統一處理異常的html頁面。spring boot提供了乙個預設的對映 error,當處理中丟擲異常之後,會轉到該請求中處理,並且該請求有乙個預設的錯誤頁面用來展示異常內容。例如,我們隨便輸入乙個錯誤的url,瀏覽器響應的頁面如下圖所示 它是根據狀態碼來顯示錯誤頁面的,那麼我們不想要 sprin...
SpringBoot 統一異常處理
統一異常處理 controlleradvice public class globalexceptionhandler exceptionhandler exception.class responsebody public r handleexception exception e 現在網上一般都...