Apache HttpClient框架允许您指定连接超时和套接字超时,如下所示:
final HttpParams httpParams = new BasicHttpParams();
if (connectionTimeout > 0) {
HttpConnectionParams.setConnectionTimeout(httpParams, connectionTimeout);
}
if (socketTimeout > 0) {
HttpConnectionParams.setSoTimeout(httpParams, socketTimeout);
}
HttpClient client = new DefaultHttpClient(httpParams);
我想要调整我的连接超时时间。这个问题很好地解释了设置之间的区别,但没有提供有关捕获异常的帮助。
我的问题是,每种类型的超时会引发什么异常?我有一个
java.net.SocketTimeoutException
;这是由连接超时还是套接字超时引起的?我怀疑是后者,特别是因为消息显示“读取超时”。连接超时会引发哪个异常?TimeoutException
?ConnectException
?为什么Apache Http文档没有记录超时设置和引发的异常之间的关系?
SocketTimeoutException
的直接父类是InterruptedIoException
和IOException
;前者只有SocketTimeoutException
作为子类,但IOException
有许多子类。是否有另一个参考文献涵盖了可以从HttpClient的execute
方法中预期收到的所有异常?它只声明可能会抛出IOException
,这真的非常广泛。