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

在Java中,如何在5分钟后关闭HttpUrlConnection而不出现异常?,java,http,url,network-programming,httpurlconnection,Java,Http,Url,Network Programming,Httpurlconnection,我必须打开一系列URL并从中读取一些数据。我不想花超过5分钟打开一个url。如果打开的时间太长,那么我想跳过该url并移动到列表中的下一个url。但是,使用超时会创建异常,在这种情况下,我无法继续常规操作 HttpURLConnection con = (HttpURLConnection)newURL(url).openConnection(); con.setRequestMethod("HEAD"); con.setConnectTimeout(5000); 我测

我必须打开一系列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
  }
}
换句话说:“收集”你的网址;并行地打开它们;有些会起作用;其他会导致超时;继续那些可以打开的


意思是:如果你认为一个异常破坏了你的整个程序;您可能希望回到“学习”模式,阅读更多关于异常存在的原因以及如何处理它们的内容;以及如何充分利用它们。

获得异常没有什么错。事实上,这是正确的做法。如果连接成功与否,您如何知道


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

删除异常,记录它并移动到下一个URL这意味着什么?也就是说,一旦我的控件在catch块中处理异常,我将如何移动到下一个链接?我的程序不会在捕获块结束后终止吗?不会。我建议您在进一步研究异常之前,先对Java中异常的工作原理有一些基本的了解(谢谢):我的意思是,一旦我的控件在catch块中处理异常,在错误处理之后,我的程序不会终止吗?或者它会继续运行for循环吗?您的评论正好证明了我所说的:您不了解异常是如何工作的(因为是的-如果捕获到异常,并且您的catch块不调用System.exit,那么您的程序只会在下一个“后续”点继续它的流)。就像在我的例子中一样,它将继续这个循环。