gpt4 book ai didi

java - 有什么方法可以区分连接超时和套接字超时吗?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:46:47 24 4
gpt4 key购买 nike

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);

我想微调我的连接超时。 This question很好地解释了设置之间的区别,但对调试抛出的异常没有帮助。

我的问题是,每种类型的超时会抛出什么异常?我有一个 java.net.SocketTimeoutException ;这是连接超时还是套接字超时?我怀疑是后者,尤其是因为消息显示“读取超时”。连接超时会抛出什么异常? TimeoutExceptionConnectException ?为什么不在 Apache Http Docs 中捕获超时设置和抛出的异常之间的关系? ?

SocketTimeoutException 的直接父类是 InterruptedIoExceptionIOException ;前者只有SocketTimeoutException一个子类,而IOException有很多子类。是否有另一个引用涵盖了人们可以期望从 HttpClient execute 方法接收到的所有类型的异常?它只声明它可以抛出一个 IOException,这确实非常广泛。

最佳答案

Java API 中的类之间的关系我还没有搞清楚,但我想你需要的是

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

  2. java.net.SocketTimeoutException:套接字超时是指在将数据传回调用方时保持服务器套接字打开的时间量。这甚至可能是服务器仍在处理和写回数据,但它花费了相当长的时间,而客户端刚刚等待它超时。

关于java - 有什么方法可以区分连接超时和套接字超时吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26022037/

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