Spring Boot提供了WebExceptionHandler一個以合理的方式處理全部錯誤的方法。它在處理順序中的位置就在WebFlux提供的處理程序以前,這被認爲是最後一個處理程序。
對於機器客戶端,它會生成一個JSON響應,其中包含錯誤,HTTP狀態和異常消息的詳細信息。對於瀏覽器客戶端,有一個「whitelabel」錯誤處理程序,它以HTML格式呈現相同的數據。您也能夠提供本身的HTML模板來顯示錯誤。
Postman截圖: 結果是json 格式
瀏覽器截圖:
自定義ErrorPage的Html:
在templates目錄下添加 error頁面,後綴根據模板引擎決定
定製此功能的第一步一般涉及使用現有機制,但替換或增長錯誤內容。爲此,您能夠添加一個類型的bean ErrorAttributes。
要更改錯誤處理行爲,能夠實現ErrorWebExceptionHandler並註冊該類型的bean定義。因爲a WebExceptionHandler的級別較低,所以Spring Boot還提供了一種方便的方式AbstractErrorWebExceptionHandler,讓您以WebFlux功能的方式處理錯誤,如如下示例所示:
public class CustomErrorWebExceptionHandler extends AbstractErrorWebExceptionHandler {
// Define constructor here
@Override
protected RouterFunction<ServerResponse> getRoutingFunction(ErrorAttributes errorAttributes) {
return RouterFunctions
.route(aPredicate, aHandler)
.andRoute(anotherPredicate, anotherHandler);
}
}
要得到更完整的圖片,您還能夠DefaultErrorWebExceptionHandler 直接子類化並覆蓋特定的方法。