Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.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 区分HttpURLConnection中的读取超时和连接超时_Java_Android_Httpurlconnection - Fatal编程技术网

Java 区分HttpURLConnection中的读取超时和连接超时

Java 区分HttpURLConnection中的读取超时和连接超时,java,android,httpurlconnection,Java,Android,Httpurlconnection,我想在使用HttpURLConnection时区分连接超时和读取超时。 当这两种情况发生时,它抛出SocketTimeoutException 如果发生连接超时,将包含一条消息作为异常消息。例如: failed to connect to /192.168.X.X (port X) after Xms 如果发生读取超时,则不包含任何消息 相关: 当然,我可以通过这样一个事实来区分它们:一个似乎包含消息,另一个没有,但似乎不合理。如果实现发生更改,代码将中断 我本以为会有两个不同的例外。

我想在使用
HttpURLConnection
时区分连接超时和读取超时。 当这两种情况发生时,它抛出
SocketTimeoutException

如果发生连接超时,将包含一条消息作为异常消息。例如:

failed to connect to /192.168.X.X (port X) after Xms
如果发生读取超时,则不包含任何消息

相关:

当然,我可以通过这样一个事实来区分它们:一个似乎包含消息,另一个没有,但似乎不合理。如果实现发生更改,代码将中断


我本以为会有两个不同的例外。也许我遗漏了什么。

一旦使用setter设置了超时值,您可以执行以下操作

try {
  connection.connect();
  try {
    yourCustomReadMethodThatThrowsSocketTimeoutException(connection);
  } catch (SocketTimeoutException e) {
    Log.e("asdf", "this is a read timeout");
  }
} catch (SocketTimeoutException e) {
  Log.e("asdf", "this is a connect timeout");
}

为什么差异很重要?它不应该。它适用于我的用例。我想采取不同的行动。这是什么用例?这应该是另一个解决方案…在这个如此复杂的问题中解释它可能太长了。如果差异不重要,那么我想问你:为什么有两个明显不同的超时?如上所述的相应方法所示,我理解您的担忧。事实上,Java异常层次结构是有缺陷的。尝试识别SQLException的根本原因。。。这就是为什么我建议你在可能的情况下尝试另一种解决方案。