Java Restful Spring引导应用程序中的异常映射
我有一个自定义的异常类,当异常发生时,我希望将其作为json返回 SpringCacheException.java RestExceptionHandler.java 在这里,我从数据库中删除联系人表,抛出异常,得到下面的长响应Java Restful Spring引导应用程序中的异常映射,java,spring-boot,exception-handling,exceptionmapper,Java,Spring Boot,Exception Handling,Exceptionmapper,我有一个自定义的异常类,当异常发生时,我希望将其作为json返回 SpringCacheException.java RestExceptionHandler.java 在这里,我从数据库中删除联系人表,抛出异常,得到下面的长响应 Position: 111 2017-10-22 00:37:08.577 WARN 10336 --- [nio-8080-exec-1] .m.m.a.ExceptionHandlerExceptionResolver : Failed to invo
Position: 111
2017-10-22 00:37:08.577 WARN 10336 --- [nio-8080-exec-1] .m.m.a.ExceptionHandlerExceptionResolver : Failed to invoke @ExceptionHandler method: org.springframework.http.ResponseEntity<java.lang.Object> com.myapp.exception.RestExceptionHandler.handleBadRequests(org.springframework.http.HttpStatus,java.lang.String,com.myapp.exception.SpringCacheException) throws java.io.IOException
我只想要一个SpringCacheException类型的json,但我得到的是一个包含错误数据的长json。谁能告诉我哪里做错了。谢谢
整个代码可以在-中找到,您的异常处理程序方法在其注释中需要SpringCacheException对象的单个参数
@ExceptionHandler(SpringCacheException.class)
ResponseEntity<Object> handleBadRequests(SpringCacheException ex) throws IOException {
//SpringCacheException errorMessage = new SpringCacheException(HttpStatus.BAD_REQUEST,"My Error",ex);
return new ResponseEntity<Object>(ex, HttpStatus.BAD_REQUEST);
}
}
顺便说一下,创建一个新的SpringCacheException违背了该处理程序的目的。您应该返回传入方法的异常
我将您的项目分叉并在此处修复:我认为您可能必须将异常转换为其他内容才能传递到ResponseEntityconstructor@Jeff你能告诉我我需要做什么改变吗??
@Override
public Contact show(int id) throws SpringCacheException {
try {
Contact contact = contactRepository.findOneById(id);
return contact;
}
catch (Exception e) {
throw new SpringCacheException();
}
}
Position: 111
2017-10-22 00:37:08.577 WARN 10336 --- [nio-8080-exec-1] .m.m.a.ExceptionHandlerExceptionResolver : Failed to invoke @ExceptionHandler method: org.springframework.http.ResponseEntity<java.lang.Object> com.myapp.exception.RestExceptionHandler.handleBadRequests(org.springframework.http.HttpStatus,java.lang.String,com.myapp.exception.SpringCacheException) throws java.io.IOException
@ExceptionHandler(SpringCacheException.class)
ResponseEntity<Object> handleBadRequests(SpringCacheException ex) throws IOException {
//SpringCacheException errorMessage = new SpringCacheException(HttpStatus.BAD_REQUEST,"My Error",ex);
return new ResponseEntity<Object>(ex, HttpStatus.BAD_REQUEST);
}
}