如何解决Spring boot @ExceptionHandler 没有响应自定义响应
我有一个带有 @RestControllerAdvice 和 @ExceptionHandler(APIException.class) 方法的全局异常处理程序。 我设计了自己的响应类 ValidationResponse.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());
}
}
自定义异常类
@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,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) {
}
}
试试这个
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。