如何处理HttpClientErrorException?

时间:2017-03-07 16:27:18

标签: java spring resttemplate spring-rest

我有一个REST服务,我按如下方式处理异常并返回一个VndErrors对象。

@ExceptionHandler(InvalidOperationException.class)
@ResponseBody
@ResponseStatus(HttpStatus.BAD_REQUEST)
public VndErrors handleException(InvalidOperationException ex) {
    return new VndErrors("Invalid operation",ex.getMessage());
}

我按如下方式使用此服务。由于传递了错误的url,我收到了HttpRequestMethodNotSupportedException。但是在REST服务方面,我没有用VndErrors包装这个异常,因为它不是我抛出的异常。它被Spring抛出。我的catch块捕获此异常,然后尝试将字符串解析为VndErrors,并在未包装时获取异常。我的问题是我们应该如何处理这种情况?有什么建议吗?

    ResponseEntity<List> responseEntity = null;
    try {
        responseEntity = template.getForEntity(baseUrl, List.class, urlVariables);
    } catch (HttpClientErrorException ex) {
        VndErrors errors = null;
        try {
            errors = getJSonStringAsVndErrors(ex.getResponseBodyAsString());
        } catch (IOException e) {
            throw new  RuntimeException(e.getMessage());
        }

        String message = errors.iterator().next().getMessage();
        throw new RuntimeException(message);
    }

0 个答案:

没有答案