[英]How to catch exceptions by @ResponseStatus in @ControllerAdvice
我正在尋找一種方法來處理與前端的通信,以防由@ResponseStatus
驅動錯誤,以便
等等。
在我們的Api網關中,我們有一個RextExceptionController
( @ControllerAdvice
),我們處理異常並將我們自己的DTO返回到前端。
如果我針對單個異常(參見下面的示例),一切正常,但是如果我想僅僅針對響應HTTP狀態,這顯然不起作用。
@ExceptionHandler(MethodArgumentTypeMismatchException.class)
protected ResponseEntity<Object> handleMethodArgumentTypeMismatch(MethodArgumentTypeMismatchException ex) {
ApiError apiError = new ApiError(HttpStatus.BAD_REQUEST);
apiError.setMessage("Bla bla Status 400");
return buildResponseEntity(apiError);
}
@ExceptionHandler(HttpMediaTypeNotSupportedException.class)
protected ResponseEntity<Object> handleHttpMediaTypeNotSupported(
HttpMediaTypeNotSupportedException ex,
HttpHeaders headers,
HttpStatus status,
WebRequest request) {
ApiError apiError = new ApiError(HttpStatus.UNSUPPORTED_MEDIA_TYPE);
apiError.setMessage("Bla bla Status 415");
return buildResponseEntity(apiError);
}
這不是一種可持續的方式來處理它,因為來自不同團隊的未來開發(應用程序基於微服務架構)可能真的拋出任何類型的異常,我不想在所有可能的異常之后運行但是基於響應狀態的處理程序。
任何提示/想法?
干杯。
你可以使用一個http處理程序攔截器來攔截請求完成后的http響應,並根據你所擁有的狀態做一些動作,查看這篇文章https://www.baeldung.com/spring-mvc-handlerinterceptor 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.