如何在 5 分钟后关闭 HttpUrlConnection 而不会在 Java 中出现异常?

How to close an HttpUrlConnection after 5 minutes without getting an exception in Java?

我必须打开一系列 url 并从中读取一些数据。我不想花超过 5 分钟来打开 url。如果打开时间太长,那么我想跳过 url 并移至列表中的下一个 url。但是使用超时会产生异常,在这种情况下,我无法继续我的常规操作。

    HttpURLConnection con = (HttpURLConnection)newURL(url).openConnection();
    con.setRequestMethod("HEAD");
    con.setConnectTimeout(5000);

我测试了这段代码,它在 5000 毫秒后给了我一个异常。有什么办法吗?

什么意思 - 如果超时,您将无法继续正常操作?

有什么问题:

for (HttpURLConnection aConnection : collectionOfConnections) {
  try {
    aConnection.setTimeout() ....
    ... probably more code
  }
  catch (WhateverExceptionWouldBeThrown) {
    ... some error handling
  }
}

换句话说:"collect" 您的网址;并行打开它们;有些会起作用;其他人会导致超时;继续那些可以打开的。

意思是:如果你认为异常会破坏你的整个程序;您可能想回到 "learning" 模式并阅读更多关于为什么存在异常以及如何处理它们的信息;以及如何利用好它们。

获得异常并没有错。事实上,这是正确的做法。否则你怎么知道连接成功与否?

只需处理异常并继续(或重试)。