Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 有没有办法区分连接超时和套接字超时?_Java_Sockets_Connection_Timeout_Apache Httpclient 4.x - Fatal编程技术网

Java 有没有办法区分连接超时和套接字超时?

Java 有没有办法区分连接超时和套接字超时?,java,sockets,connection,timeout,apache-httpclient-4.x,Java,Sockets,Connection,Timeout,Apache Httpclient 4.x,Apache HttpClient框架允许您指定连接超时和套接字超时,如下所示: final HttpParams httpParams = new BasicHttpParams(); if (connectionTimeout > 0) { HttpConnectionParams.setConnectionTimeout(httpParams, connectionTimeout); } if (socketTimeout > 0) { HttpConnecti

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);
我想微调我的连接超时。很好地解释了设置之间的差异,但对调试引发的异常没有帮助

我的问题是,每种类型的超时会引发什么异常?我有一个朋友;这是连接超时还是套接字超时?我怀疑是后者,尤其是因为信息上写着“读取超时”。连接超时将引发什么异常?为什么超时设置和抛出的异常之间的关系没有被捕捉到


SocketTimeoutException
的直接父类为和;前者对于子类只有
SocketTimeoutException
,但是
IOException
有许多子类。是否有另一个参考文献涵盖了从HttpClient
execute
方法可以预期收到的所有类型的异常?它只声明它可以抛出一个
IOException
,这真的非常广泛。

我还没有讨论Java API中类之间的关系,但我认为您需要的是

  • java.net.ConnectException:由于错误的网络、网络过载、对服务器的请求过多、防火墙而导致的数据包丢失

  • java.net.SocketTimeoutException:套接字超时是数据传输回调用方时保持服务器套接字打开的时间量。这甚至可能是因为服务器仍在处理和写回数据,但这需要相当长的时间,而客户机等待数据的时间刚刚超时