Spring Boot錯誤處理機制

2021-08-22 04:42:18 字數 3503 閱讀 2536

摘要: 1)、springboot預設的錯誤處理機制 預設效果: ​ 1)、瀏覽器,返回乙個預設的錯誤頁面 瀏覽器傳送請求的請求頭: ​ 2)、如果是其他客戶端,預設響應乙個json資料 ​  原理: ​ 可以參照errormvcautoconfiguration;錯誤處理的自動配置; 給容器中...

預設效果:

​ 1)、瀏覽器,返回乙個預設的錯誤頁面

瀏覽器傳送請求的請求頭:

​ 2)、如果是其他客戶端,預設響應乙個json資料

原理:​ 可以參照errormvcautoconfiguration;錯誤處理的自動配置;

給容器中新增了以下元件
​ 1、defaulterrorattributes:

幫我們在頁面共享資訊;

@override

public mapgeterrorattributes(requestattributes requestattributes,

boolean includestacktrace)

​ 2、basicerrorcontroller:處理預設/error請求

@controller

public class basicerrorcontroller extends abstracterrorcontroller

@responsebody //產生json資料,其他客戶端來到這個方法處理;

private string path = "/error"; 系統出現錯誤以後來到error請求進行處理;(web.xml註冊的錯誤頁面規則)

//模板引擎不可用,就在靜態資源資料夾下找errorviewname對應的頁面 error/404.html

return resolveresource(errorviewname, model);

}

​ 步驟:

​ 一但系統出現4xx或者5xx之類的錯誤;errorpagecustomizer就會生效(定製錯誤的響應規則);就會來到/error請求;就會被basicerrorcontroller處理;

​ 1)響應頁面;去哪個頁面是由defaulterrorviewresolver解析得到的;

}1)、如何定製錯誤的頁面;

​ 1)、有模板引擎的情況下;error/狀態碼; 【將錯誤頁面命名為 錯誤狀態碼.html 放在模板引擎資料夾裡面的 error資料夾下】,發生此狀態碼的錯誤就會來到 對應的頁面;

​ 我們可以使用4xx和5xx作為錯誤頁面的檔名來匹配這種型別的所有錯誤,精確優先(優先尋找精確的狀態碼.html);

​ 頁面能獲取的資訊;

​ timestamp:時間戳

​ status:狀態碼

​ error:錯誤提示

​ exception:異常物件

​ message:異常訊息

​ errors:jsr303資料校驗的錯誤都在這裡

​ 2)、沒有模板引擎(模板引擎找不到這個錯誤頁面),靜態資源資料夾下找;

​ 3)、以上都沒有錯誤頁面,就是預設來到springboot預設的錯誤提示頁面;

2)、如何定製錯誤的json資料;

​ 1)、自定義異常處理&返回定製json資料;

@controlleradvice

public class myexceptionhandler

}//沒有自適應效果...

​ 2)、**到/error進行自適應響應效果處理

3)、將我們的定製資料攜帶出去;

出現錯誤以後,會來到/error請求,會被basicerrorcontroller處理,響應出去可以獲取的資料是由geterrorattributes得到的(是abstracterrorcontroller(errorcontroller)規定的方法);

​ 1、完全來編寫乙個errorcontroller的實現類【或者是編寫abstracterrorcontroller的子類】,放在容器中;

​ 2、頁面上能用的資料,或者是json返回能用的資料都是通過errorattributes.geterrorattributes得到;

​ 容器中defaulterrorattributes.geterrorattributes();預設進行資料處理的;

自定義errorattributes

//給容器中加入我們自己定義的errorattributes

@component

public class myerrorattributes extends defaulterrorattributes

}

最終的效果:響應是自適應的,可以通過定製errorattributes改變需要返回的內容

Spring Boot錯誤處理機制

預設效果 1 瀏覽器,返回乙個預設的錯誤頁面 瀏覽器傳送請求的請求頭 2 如果是其他客戶端,預設響應乙個json資料 原理 可以參照errormvcautoconfiguration 錯誤處理的自動配置 給容器中新增了以下元件 1 defaulterrorattributes 幫我們在頁面共享資訊 ...

Spring Boot錯誤處理機制

預設效果 1 瀏覽器,返回乙個預設的錯誤頁面 瀏覽器傳送請求的請求頭 2 如果是其他客戶端,預設響應乙個json資料 原理 可以參照errormvcautoconfiguration 錯誤處理的自動配置 給容器中新增了以下元件 1 defaulterrorattributes 幫我們在頁面共享資訊 ...

springboot 錯誤處理機制

responsestatus value httpstatus.forbidden,reason 自定義的錯誤 public class myexception extends runtimeexception public myexception string msg order ordered....