我有问题,然后我尝试捕捉异常。
这是我的类,它实现了ResponseErrorHandler:
public class ErrorGenerator implements ResponseErrorHandler {
@Override
public void handleError(ClientHttpResponse response) throws IOException {
ServiceError error = objectMapper.readValue(response.getBody(), ServiceError.class);
String message = "Test"
ValidationException exception = new ValidationException(error);
throw exception;
}
@Override
public boolean hasError(ClientHttpResponse response) throws IOException {
return true;
}
}
ValidationException扩展了ServiceException,它扩展了RuntimeException。
这是我的@ControllerAdvice类
@ExceptionHandler(ServiceException.class)
public ServiceError handleException(ServiceException exception) {
return exception.getError();
}
我收到的错误说:
Exception thrown in handleError: {}
我将不胜感激。
答案 0 :(得分:0)
需要传递param HttpServletRequest request
,而@Laurynas建议它应该返回ResponseEntity<?>
。所以解决方案就是下一个:
@ExceptionHandler(ServiceException.class)
public ServiceError handleException(HttpServletRequest request, ServiceException exception) {
return new ResponseEntity<ServiceError>(exception.getError());
}