Java 如何避免捕获异常后返回null?
我正在使用Java中的HttpClient库编写一个REST客户端 我编写此方法是为了发布对象:Java 如何避免捕获异常后返回null?,java,rest,exception,nullpointerexception,httpclient,Java,Rest,Exception,Nullpointerexception,Httpclient,我正在使用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"); H
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客户端异常),并在其中处理异常
- 构建一个空响应对象,设置响应的状态,并让调用此方法的服务处理该状态
- 向调用此方法的服务抛出异常(您自己的异常或http客户端异常),并在其中处理异常
- 构建一个空响应对象,设置响应的状态,并让调用此方法的服务处理该状态
- 将响应对象从一个类传递到另一个类不是一个好主意,最好构建一个DTO并将其返回给调用类
如果需要返回响应对象,则可以: