簡體   English   中英

Spring Boot:自定義異常為異常消息添加前綴

[英]Spring Boot: Custom exception adds prefix to the exception message

在 Spring Boot 應用程序中,我創建了一個自定義GlobalExceptionHandler並添加以下方法來處理上傳過程中無效文件類型的ConstraintViolationException

@ExceptionHandler(ConstraintViolationException.class)
@ResponseStatus(HttpStatus.UNPROCESSABLE_ENTITY)
public ResponseEntity<Object> handleConstraintViolationException(
                                  ConstraintViolationException ex, 
                                  WebRequest request) {
        log.error("Invalid file type.", ex);
        return buildErrorResponse(ex, HttpStatus.UNPROCESSABLE_ENTITY, request);
}

我的buildErrorResponse工作正常,並為其他句柄方法構建正確的響應。 但是,它會在我的錯誤消息中添加“ uploadFile.file: ”前綴。

我的問題:

1.我的handleConstraintViolationException實現有什么問題嗎? 如果沒有,我該如何解決這個問題?

2.對於已經在javax.validation中定義的異常,如ConstraintViolationException ,我認為不需要創建自定義異常類,如下所示。 真的嗎?

注意:如果你需要看一下我的GlobalExceptionHandler ,它就像在這個 GitHub 上

問題 1 的答案:您的實現沒有錯,但缺少一些屬性。 對於我認為的最佳實踐,您可以創建一個類以將其用於錯誤響應,其中可以包含狀態代碼、時間戳、消息、描述等。 您可以在您的 handleConstraintViolationException 方法中使用這樣的方法: private ResponseEntitygenerateErrorMessage(ConstraintViolationException ex, WebRequest request){ ErrorMessage errorMessage = new ErrorMessage.ErrorMessageBuilder() .statusCode(HttpStatus.BAD_REQUEST.value()) .timeStamp(DateTimeFormatter.ofPattern("yyyy /MM/dd HH:mm:ss").format(LocalDateTime.now())).message(ex.getMessage()).description(request.getDescription(false)).build(); 返回新的 ResponseEntity<>(errorMessage, HttpStatus.BAD_REQUEST); }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM