Springboot異常錯誤處理解決方案詳解

2021-10-17 12:44:51 字數 2931 閱讀 2329

1.在有模板引擎的情況下:

springboot會預設找 templates/error/錯誤狀態碼.html,所以我們要定製化錯誤頁面就可以到templates/error下建立乙個【對應錯誤狀態碼.html】html檔案,當發生此狀態碼的錯誤springboot就會來到對應的頁面。

同時如果我們想讓400-499之間的錯誤都去同乙個錯誤頁面,那我們可以在templates/error下建立乙個4xx.html。同理500-599的錯誤可以用5xx.html。

注意:springboot會優先匹配具體的【錯誤狀態碼.html】,然後再匹配4xx,5xx的。例如:發生了404錯誤,springboot優先到templates/error下找404.html,如果沒有404.html,再找有沒有4xx.html,有的話就會使用4xx.html。

在錯誤頁面我們能夠獲取到的資訊:

2.在沒有模板引擎(模板引擎找不到這個錯誤頁面)的情況下,springboot會到靜態資源資料夾下的error包下找。

3.以上都沒有找到錯誤頁面,就預設用springboot預設的錯誤提示頁面

錯誤異常處理——自定義響應json資料

上邊的錯誤處理中,如果是瀏覽器訪問可以響應我們自己定製的錯誤頁面,但是如果是其他客戶端訪問,則只會響應固定的json資料,如下圖所示:

下邊講解三個異常處理返回自定義json資料的方式

首先編寫乙個自定義異常類

public class usernotexitexception extends runtimeexception 

}

方式一:

在異常處理器類中,通過map封裝我們自己的json資料,然後將map返回。

@controlleradvice

public class myexceptionhandler

}

@controlleradvice:表明這是乙個全域性異常處理類

@exceptionhandler(usernotexitexception.class):表明標註的此方法用於處理usernotexitexception異常。

@responsebody:將返回結果封裝為json

3.結果

不管瀏覽器還是其他客戶端發生該異常都統一得到下圖的響應

方式二:**到/error,進行自適應響應效果處理

@controlleradvice

public class myexceptionhandler

}

將響應**到 /error,讓springboot幫我們生成自適應效果。但是必須注意,一定要設定錯誤狀態碼(如**中標黃色的那一句**)。不設定的話springboot就不會進入定製錯誤頁面的解析流程。設定了之後springboot就會到templates/error/錯誤狀態碼.html頁面處理。

注意:此方式瀏覽器訪問發生錯誤不再響應的是json資料了,而是對於的錯誤響應網頁。

其他客戶端訪問響應的是json資料,但是響應的json資料中沒有我們map中put的資料。

方式三:通過defaulterrorattribute

1.在異常處理器類中將響應的json資料封裝到map中,然後再將map放到請求域中

@controlleradvice

public class myexceptionhandler

}

2.編寫錯誤屬性類:新建乙個類繼承defaulterrorattribute類,並重寫其中的geterrorattributes方法

@component

public class myerrorattributes extends defaulterrorattributes

}

注意:

(1).必須將錯誤屬性類新增到spring容器中。

(2).第7行標黃那段**的作用是獲取異常處理類中的map。其中最後的引數0,是從request域中取出資料「ext」。若要從session域中取資料,則將該引數設定為1.(0是從request域獲取資料,1是從session域中獲取資料)

(3).錯誤屬性類中返回的map中的所有內容,頁面都可以獲取到。

總結:此方式最好,當瀏覽器訪問發生錯誤時,會響應對應的錯誤響應頁面,當其他客戶端訪問發生錯誤時也會響應我們定製的json資料。

瀏覽器響應:

其他客戶端響應:

最新2020整理收集的一些高頻面試題(都整理成文件),有很多乾貨,包含mysql,netty,spring,執行緒,spring cloud、jvm、原始碼、演算法等詳細講解,也有詳細的學習規劃圖,面試題整理等,需要獲取這些內容的朋友**q君樣:11604713672

spring boot 錯誤頁,檔案上傳,異常處理

1.放在resources static error下 2.錯誤頁配置 3.檔案上傳 指定上傳的資料夾 spring.servlet.multipart.location e springboot 設定單個檔案最大最小 spring.servlet.multipart.max file size 5...

正確使用spring boot預設的異常處理

參考文件 網上都說根據http錯誤碼返回對應頁面,需要自已自定義異常處理什麼之類的,其實spring boot 已經幫我們實現了。繼承basicerrorcontroller時,需要實現乙個建構函式 檢視原始碼時,可以看到該構造函式呼叫了另外乙個方法 有人說 做學問時要不疑處有疑 看 其實也差不多,...

springboot 異常錯誤頁面初了解

通常我們的執行專案時對映位址輸錯了或者資料問題等等就會出現這個錯誤頁面。而這個頁面是springboot預設展示的頁面。我們也可以利用 模板引擎 製作乙個屬於自己的錯誤頁面 在templates資料夾下建立error檔案,裡面有404.html和4xx.html檔案。為什麼要建立在這?因為mvc的自...