Java 无法在Spring引导中使用自定义HttpMessageNodeReadableException错误消息
我目前正在尝试为异常提供自定义消息,但遇到了HttpMessageNodeDataableException问题 我有一个ErrorDetails类:Java 无法在Spring引导中使用自定义HttpMessageNodeReadableException错误消息,java,json,spring,spring-boot,exception,Java,Json,Spring,Spring Boot,Exception,我目前正在尝试为异常提供自定义消息,但遇到了HttpMessageNodeDataableException问题 我有一个ErrorDetails类: public class ErrorDetails { private Date timestamp; private String message; private String details; public ErrorDetails(Date timestamp, String message, Str
public class ErrorDetails {
private Date timestamp;
private String message;
private String details;
public ErrorDetails(Date timestamp, String message, String details) {
super();
this.timestamp = timestamp;
this.message = message;
this.details = details;
}
public Date getTimestamp() {
return timestamp;
}
public void setTimestamp(Date timestamp) {
this.timestamp = timestamp;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public String getDetails() {
return details;
}
public void setDetails(String details) {
this.details = details;
}
我还有一个自定义异常处理程序:
@Order(Ordered.HIGHEST_PRECEDENCE)
@ControllerAdvice
@RestController
public class CustomizedExceptionHandler extends ResponseEntityExceptionHandler {
@ExceptionHandler(HttpMessageNotReadableException.class)
@Override
public final ResponseEntity<Object> handleHttpMessageNotReadable(HttpMessageNotReadableException ex, HttpHeaders headers, HttpStatus status, WebRequest request){
ErrorDetails errorDetails = new ErrorDetails(new Date(), "hello",request.getDescription(true));
errorDetails.setMessage("Testing message");
return new ResponseEntity<>(errorDetails,HttpStatus.NOT_ACCEPTABLE);
}
}
JSON请求:
{
"name": "An workout",
"dateToComplete": "Today",
"description": "Sleep Day",
"priority": "lala",
"completed": false
}
期望的效果只是出现测试消息,而不是冗长的描述
我在Eclipse控制台中也可以看到:
警告16508-[nio-5000-exec-4].w.s.m.s.DefaultHandlerExceptionResolver:已解决[org.springframework.http.converter.httpMessageNodeAbleException:JSON解析错误:无法从字符串拉拉反序列化int类型的值:不是有效的整数值;嵌套异常是com.fasterxml.jackson.databind.exc.InvalidFormatException:无法从字符串拉拉反序列化int类型的值:不是有效的整数值
通过引用链在[Source:PushbackInputStream;第5行,第17列]处:com.tdl.model.ToDoNote[priority]]
我将状态更改为“不可接受”,只是为了更清楚地看到是否返回了自定义错误
任何帮助都将不胜感激。谢谢
编辑
为InvalidFormatException添加了ExceptionHandler,但未做任何更改。我仍然收到与以前相同的默认errorexception消息
@ExceptionHandler(InvalidFormatException.class)
public final ResponseEntity<Object> handleInvalidFormat(InvalidFormatException ex, HttpHeaders headers, HttpStatus status, WebRequest request){
ErrorDetails errorDetails = new ErrorDetails(new Date(), "hello",request.getDescription(true));
errorDetails.setMessage("Testing message");
return new ResponseEntity<>(errorDetails,HttpStatus.NOT_ACCEPTABLE);
}
问题解决了。我的自定义异常类位于一个名称不正确的包中。它被称为“异常”。而整个项目所在的位置应该是com.app.exception。尝试使用InvalidFormatExceptionexception@Deadpool已尝试,但没有更改:/have handleHttpMessageNotReadable和InvalidFormatException异常处理程序现在
@ExceptionHandler(InvalidFormatException.class)
public final ResponseEntity<Object> handleInvalidFormat(InvalidFormatException ex, HttpHeaders headers, HttpStatus status, WebRequest request){
ErrorDetails errorDetails = new ErrorDetails(new Date(), "hello",request.getDescription(true));
errorDetails.setMessage("Testing message");
return new ResponseEntity<>(errorDetails,HttpStatus.NOT_ACCEPTABLE);
}