繁体   English   中英

Spring 启动 @ExceptionHandler 没有响应自定义响应

[英]Spring boot @ExceptionHandler not responding with custom response

我有一个带有 @RestControllerAdvice 和 @ExceptionHandler(APIException.class) 方法的全局异常处理程序。 我设计了自己的响应 class ValidationResponse.class,我将其添加到响应实体 class。 我想用 ValidationResponse 回应,但得到一些通用的回应。

全局异常处理程序

@RestControllerAdvice
public class RestResponseExceptionHandler {

    @ExceptionHandler(APIException.class)
    public ResponseEntity<ValidationResponse> handleException(APIException ex) {
        ValidationResponse validationResponse = new ValidationResponse(ex.getErrorCode(), ex.getErrorMessage());
        return new ResponseEntity<>(validationResponse, ex.getHttpStatus());
    }
}

自定义异常 class

@Getter
@Setter
public class APIException extends RuntimeException {

    private int errorCode;

    private String errorMessage;

    private HttpStatus httpStatus;

    public APIException(int errorCode, String errorMessage, HttpStatus httpStatus) {
        this.errorCode = errorCode;
        this.errorMessage = errorMessage;
        this.httpStatus = httpStatus;
    }

    public APIException(int errorCode, String errorMessage, HttpStatus httpStatus, Exception e) {
        super(e);
        this.errorCode = errorCode;
        this.errorMessage = errorMessage;
        this.httpStatus = httpStatus;
    }

}

自定义响应设计

@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@JsonInclude(Include.NON_NULL)
public class ValidationResponse {

    public int errorCode;

    public String errorMessage;
}

预期响应

{
    "errorCode": 1010,
    "errorMessage": "some custome validation message"
}

当前响应

{
  "error-message" : "Request processing failed; nested exception is com.package.exception.APIException",
  "error-code" : "GENERAL_ERROR",
  "trace-id" : null,
  "span-id" : null
}
@ControllerAdvice
public class RestResponseExceptionHandler extends ResponseEntityExceptionHandler {

    @ExceptionHandler(APIException.class)
    public ResponseEntity<ValidationResponse> handleException(APIException ex, WebRequest webRequest) {

    }
}

尝试这个

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM