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的根本原因。。。这就是为什么我建议你在可能的情况下尝试另一种解决方案。