首页 > 解决方案 > 调用restTemplate.getForObject时如何处理未找到数据

问题描述

我正在调用restTemplate.getForObject从 Mongo DB 中检索某个值。如果在数据库中找不到预期的数据,如何处理异常?

Object[] mongodata = restTemplate.getForObject(resulturl,Object[].class,keyval);
list = Arrays.asList(mongodata); 

其中keyval是一个包含json的字符串,resulturl是调用mongo的url

标签: javamongodbresttemplaterestheart

解决方案


基本上,您有两个主要选择:

  1. 只需将调用包装RestTemplate在一个try-catch块中并处理错误(如果 404 not found 响应,它将是HttpClientErrorException)。就像是
try {
  Object[] mongodata = restTemplate.getForObject(resulturl,Object[].class,keyval);
  list = Arrays.asList(mongodata);
} catch (HttpClientErrorException e) {
  if (e.getStatusCode() == HttpStatus.NOT_FOUND) {
    // Do something
  } else {
    throw e;
  } 
}
  1. 实施一个ResponseErrorHandler.

有关示例,请参见Baeldung 上的这篇文章。


推荐阅读