如何忽略异常并继续循环启动

时间:2012-03-31 19:49:03

标签: java exception exception-handling connection

你好我们试图通过for循环从字符串数组中的一组url中打印标题,而打印时,在某些情况下无法建立连接并引发异常,这会阻止所有剩余的元素....

我正在使用此代码进行打印,有人可以帮助我忽略异常并继续使用字符串数组中的另一个元素循环...

for (int f = 0; f < fin.length; f++) //fin be string array of urls
{
Document finaldoc = Jsoup.connect(fin[f]).get();
out.println(finaldoc.title());
}

其中一个例外是

java.net.SocketTimeoutException: Read timed out

3 个答案:

答案 0 :(得分:14)

您需要try{ } catch { }

for (int f = 0; f < fin.length; f++) //fin be string array of urls
{
    try {
        Document finaldoc = Jsoup.connect(fin[f]).get();
        out.println(finaldoc.title());
    }
    catch (SocketTimeoutException exception) {
        continue;
    }
}

显然这不是好习惯,因为它无法解决甚至处理错误,但这就是你如何继续循环遍历。

答案 1 :(得分:2)

您可以提供一个空的捕获:

   for (int f = 0; f < fin.length; f++) //fin be string array of urls
   {
      try{
       Document finaldoc = Jsoup.connect(fin[f]).get();
       out.println(finaldoc.title());
      } catch(Exception e){}
   }

答案 2 :(得分:0)

你需要一个while循环而不是for循环。然后你可以捕捉异常并继续前进。这将以您选择的方式处理异常时继续循环。当然,在异常处理程序中使用continue的for将与接受的答案中的相同。糟糕!

int[] myArray = {1,2,3,4,5,4,2,3};
    int index = 0;

    while(index < myArray.length) {

        try {
            if(myArray[index] == 4) {
                throw new Exception();
            } else {
                System.out.println(myArray[index]);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

        index++;
    }