Java Spring @ExceptionHandler未正确处理错误

时间:2016-08-10 08:00:24

标签: java spring exception exception-handling

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

这是我的类,它实现了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: {}

我将不胜感激。

1 个答案:

答案 0 :(得分:0)

需要传递param HttpServletRequest request,而@Laurynas建议它应该返回ResponseEntity<?>。所以解决方案就是下一个:

    @ExceptionHandler(ServiceException.class)
    public ServiceError handleException(HttpServletRequest request, ServiceException exception) {
         return new ResponseEntity<ServiceError>(exception.getError());
    }