SpringBoot統一異常處理

2021-10-01 07:08:08 字數 1792 閱讀 4662

示例**在

先來看這樣乙個介面:

@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 現在網上一般都...