我有问题,然后尝试捕获异常。
这是我的类,它实现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: {}
我将不胜感激任何帮助。
最佳答案
它需要通过参数HttpServletRequest request
传递,并且正如@Laurynas建议应返回ResponseEntity<?>
一样。因此解决方案如下:
@ExceptionHandler(ServiceException.class)
public ServiceError handleException(HttpServletRequest request, ServiceException exception) {
return new ResponseEntity<ServiceError>(exception.getError());
}