java - 从服务器读取数据时如何处理 ReadTimOut 异常?

标签 java android exception

我正在从 Amazon S3 服务器下载长文件。如果发生任何异常,我会将异常记录到我的服务器数据库中。我看到大量异常是 java.net.SocketTimeoutException: Read timed out

我认为当用户处于不良/较差的互联网覆盖范围时会发生这种情况,但我想知道用户是否处于不良覆盖范围,那么为什么要登录服务器?(因为这也是通过互联网完成的)。有人知道原因吗?

每次发生该异常的行是

while ((numRead = inputStream.read(mBuffer)) >= 0)

我该如何处理该异常?我想,当异常发生时,我应该再次尝试一下,例如 5 次,通过调用

inputStream.read(mBuffer);

Is I am thinking correct?

Is after read time out exception occur the inputstream will be valid to use again?

Will calling inputStream.read(mBuffer); will be resume from the last stream readed?

谢谢

最佳答案

超时后输入流保持有效,缓冲区不包含任何数据。如果您遇到很多超时,我会从增加超时时间开始。加倍。开始时至少需要 30-60 秒,因为您需要所有数据。

关于java - 从服务器读取数据时如何处理 ReadTimOut 异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7794279/

相关文章:

Android - 如何使用 uri 源在 VideoView 上设置缩略图?

java - 如何反序列化可能是字符串、对象或列表的 json/gson

android - 在 Canvas 上用图形编号替换数字编号

c++ - 抛出 C++ 异常时要抛出什么?

java - ControlsFX RangeSlider 无法禁用

java - 在 robocode 中前往 map 中心

java - 将结构列表复制到 Java 中的 float 组

java - Java Media Framework 不是跨平台的吗?

python-3.x - Python3中的异常处理

c++ - 删除函数c++的读取访问冲突异常