我有问题,然后尝试捕获异常。

这是我的类,它实现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());
    }

10-05 18:17