我想在使用HttpURLConnection
时区分连接超时和读取超时。
当两者中的任何一个发生时,它会抛出SocketTimeoutException
。
如果发生连接超时,则会包含一条消息作为异常消息。例如:
failed to connect to /192.168.X.X (port X) after Xms
如果发生读取超时,则不会包含任何消息。
相关:
当然,我可以通过以下事实来区分它们:一个似乎包含一条消息而另一个没有,但似乎并不合理。如果实现改变了代码中断。
我本来期望两种不同的例外。也许还有我想念的东西。
答案 0 :(得分:2)
使用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");
}