Exception 捕获网络问题的所有异常

Exception 捕获网络问题的所有异常,exception,connection,jsoup,Exception,Connection,Jsoup,我有一个程序,试图通过JSoup连接到html页面。我将这段代码放在while循环中,目的是用至少n个元素填充一个映射。在几乎所有的伪代码中,它看起来是这样的: while(!myMap.hasFiveKeys){ doc =JSoup.parse("http://www.website.com"); wordMap.fillFrom(doc); } 我希望它位于catch块中,当抛出任何与网络相关的异常时,我希望增加一个计数器,然后while条件可以包含connecti

我有一个程序,试图通过JSoup连接到html页面。我将这段代码放在while循环中,目的是用至少n个元素填充一个映射。在几乎所有的伪代码中,它看起来是这样的:

while(!myMap.hasFiveKeys){
    doc =JSoup.parse("http://www.website.com");
      wordMap.fillFrom(doc);
 }
我希望它位于catch块中,当抛出任何与网络相关的异常时,我希望增加一个计数器,然后while条件可以包含
connectionattributesConnection.execute()(由
get()
post()
间接调用)记录它抛出的所有异常。它们都是IOException的子类,所以您可以通过捕获IOException来捕获它们

要回答问题的另一部分,请将其放入重试循环中,如下所示:

int connectionAttempts = 0;
while (map.size() < 5 || connectionAttempts < 10)
    try {
        Document d = Jsoup.connect(url).get();
        fillUpMap(d, map);
        //we connected successfully, reset the retry counter
        connectionAttempts = 0;
        if (map.size() < 5)
            /* ... pick a new url for next iteration ... */
    } catch (IOException e) {
        ++connectionAttempts;
    }
int connectionattents=0;
while(map.size()<5 | | connectionAttents<10)
试一试{
文档d=Jsoup.connect(url.get();
fillUpMap(d,map);
//我们已成功连接,请重置重试计数器
ConnectionAttents=0;
if(map.size()<5)
/*…为下一次迭代选择一个新url*/
}捕获(IOE异常){
++结缔组织诱惑;
}
实际上,您可能希望仅在超时或服务器错误(500等)的情况下重试,在HTTP状态代码指示请求将不会成功时提前停止(404、403、410等),或者使用可配置的尝试次数