例外,以及重置连接时如何最好重试?

Qua*_*Oat 8 java connection exception-handling

我有一些代码连接到URL以下载文件,然后对其执行一些处理.但是,有时我收到错误java.net.SocketException: Connection reset.

我想在收到此错误时重试下载该文件,在放弃之前最多说3次.我想知道什么是最好的结构方式.

以下是否正常.将try-catch块放在while循环内是否可以接受,还是有更好的方法?

非常感谢所有帮助!

while(!connected && retries > 0) {
  retries--;
  URL downloadUrl;
  URLConnection conn;

  try {
    downloadUrl = new URL(url);
    conn = downloadUrl.openConnection();
    conn.connect();
    connected = true;
    // Perform processing on downloaded file here

  } catch (IOException e) {
    Logger.batchLog(e);
  }
} 
Run Code Online (Sandbox Code Playgroud)

sho*_*639 1

我一直认为吞下异常总是不好的,但我认为在这里,这是判断连接是否确实被重置的唯一方法。我想您正在根据您的要求处理异常,所以这就是全部问题。

但我会这样做,这样你就不会接受最后一个例外。如果失败三次,您将需要重新抛出该异常或以某种方式优雅地失败。