Spring Boot中Web應用的統一異常處理

2021-08-21 10:31:05 字數 1572 閱讀 7487

我們在做web應用的時候,請求處理過程中發生錯誤是非常常見的情況。spring boot提供了乙個預設的對映:/error,當處理中丟擲異常之後,會轉到該請求中處理,並且該請求有乙個全域性的錯誤頁面用來展示異常內容。如圖:

雖然,spring boot中實現了預設的error對映,但是在實際應用中,上面你的錯誤頁面對使用者來說並不夠友好,我們通常需要去實現我們自己的異常提示。

@controlleradvice

class globalexceptionhandler

}

lang="en">

charset="utf-8" />

統一異常處理title>

head>

th:text="$">

div>

th:text="$">

div>

body>

html>可以看到如下錯誤提示頁面:

通過實現上述內容之後,我們只需要在controller中丟擲exception,當然我們可能會有多種不同的exception。然後在@controlleradvice類中,根據丟擲的具體exception型別匹配@exceptionhandler中配置的異常型別來匹配錯誤對映和處理。

在上述例子中,通過@controlleradvice統一定義不同exception對映到不同錯誤處理頁面。而當我們要實現restful api時,返回的錯誤是json格式的資料,而不是html頁面,這時候我們也能輕鬆支援。

本質上,只需在@exceptionhandler之後加入@responsebody,就能讓處理函式return的內容轉換為json格式。

下面以乙個具體示例來實現返回json格式的異常處理。

public

class errorinfo

public

class

myexception

extends

exception

}

@controller

public

class

hellocontroller

}

@controlleradvice

public

class

globalexceptionhandler

}

也可以相容所有exception的子類,處理如下:

@controlleradvice

public

class

globalexceptionhandler

return r;}}

更多異常都可以以此類推。

SpringBoot中的響應式web應用

在spring 5中,spring mvc引入了webflux的概念,webflux的底層是基於reactor netty來的,而reactor netty又使用了reactor庫。本文將會介紹在spring boot中reactive在webflux中的使用。前面我們講到了,webflux的基礎是...

springboot(二) 在Web中開發應用

springboot中靜態資源訪問 在開發web應用的時候,需要引用大量的js css 等靜態資源。spring boot預設提供靜態資源目錄位置需置於classpath下,目錄名需符合如下規則 static public resources meta inf resources 啟動程式後訪問路徑...

springboot 渲染web頁面

spring boot提供了預設配置的模板引擎主要有以下幾種 注意 避免使用jsp,jsp無法實現spring boot的多種特性 org.springframework.bootgroupid spring boot starter webartifactid dependency org.spr...