gpt4 book ai didi

java - 如何避免捕获异常后返回null?

转载 作者:行者123 更新时间:2023-12-02 01:24:46 31 4
gpt4 key购买 nike

我正在使用 Java 中的 HttpClient 库编写 REST 客户端。

我编写了这个方法来发布对象:

public HttpResponse post(URIBuilder uri, Object body) {
HttpPost request = new HttpPost(setBaseProps(uri));
request.setHeader(HttpHeaders.CONTENT_TYPE, "application/json;charset=UTF-8");

HttpResponse response = null;
try {
StringEntity bodyToPost = new StringEntity(g.toJson(body));
request.setEntity(bodyToPost);

log.info("Perform POST request to: " + request.getURI().toString());
response = client.execute(request);
} catch (UnsupportedEncodingException e) {
log.error("The Character Encoding is not supported!");
e.printStackTrace();
} catch (ClientProtocolException e) {
log.error("HTTP protocol error!");
e.printStackTrace();
} catch (IOException e) {
log.error("Some problems occur or the connection was aborted!");
e.printStackTrace();
}

return response;
}

private URI setBaseProps(URIBuilder uri) {
URI built = null;

uri.setScheme(props.protocol())
.setHost(props.host())
.setPort(props.port());
try {
built = uri.build();
} catch (URISyntaxException e) {
e.printStackTrace();
}

return built;
}

所有方法都会在方法签名中抛出已检查的异常。如果其中一些异常被缓存,HttpResponse 将为 null,这可能会在服务上产生 NullPointerException

如何避免这种情况?

将响应包装到可选并在服务上检查它是否很好?

谢谢!

最佳答案

将响应对象从一个类传递到另一个类并不是一个好主意,最好构建一个 DTO 并将其返回到调用类。

如果您需要返回响应对象,那么您可以:

  • 向调用此方法的服务抛出异常(您自己的异常或 http 客户端异常)并在其中处理异常。
  • 构建一个空响应对象,设置status响应并让调用此方法的服务处理该状态。

关于java - 如何避免捕获异常后返回null?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57098992/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com