我有一个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);
}