SpringBoot之錯誤處理機制以及定製錯誤資訊

2021-08-21 16:03:01 字數 3613 閱讀 6471

預設效果:

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

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

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

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

給容器中新增了以下元件

1、defaulterrorattributes:

// 幫我們在頁面共享資訊;

@override

public map geterrorattributes(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解析得到的

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

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

頁面能獲取的資訊:

timestamp:時間戳

status:狀態碼

error:錯誤提示

exception:異常物件

message:異常訊息

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

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

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

a、自定義異常處理&返回定製json資料(如果只是需要返回自定義錯誤的json格式資料,這種方式即可滿足)

@controlleradvice

//這個註解是指這個類是處理其他controller丟擲的異常

public

class

myexceptionhandler

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

b、**到/error進行自適應響應效果處理

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

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

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

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

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

自定義errorattributes

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

@component

public

class

myerrorattributes

extends

defaulterrorattributes

}

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

瀏覽器訪問,返回錯誤頁面:

其他客戶端訪問,則返回json資料:

spring boot 錯誤處理

一 錯誤的處理 方法一 spring boot 將所有的錯誤預設對映到 error,實現errorcontroller controller public class baseerrorcontroller implements errorcontroller public string error...

SpringBoot錯誤處理

我們來看看錯誤處理是如何註冊的 private static class errorpagecustomizer implements errorpageregistrar,ordered override public void registererrorpages errorpageregist...

springboot 錯誤處理

錯誤處理步驟 value private string path error 系統出現錯誤以後來到error請求進行處理 web.xml註冊的錯誤頁面規則 controller public class basicerrorcontroller extends abstracterrorcontro...