Как игнорировать исключения и продолжить цикл с начала - PullRequest
1 голос
/ 31 марта 2012

Привет, ребята, я пытаюсь напечатать заголовок из набора URL-адресов в массиве строк с помощью цикла for, при печати в некоторых случаях не удается установить соединение и возникает исключение, которое останавливает все остальные элементы ....

Я использую этот код для печати, может кто-нибудь помочь мне игнорировать исключения и продолжить цикл с другим элементом из массива строк ...

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 ]

14 голосов
/ 31 марта 2012

Вам нужно 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;
    }
}

Очевидно, что это не очень хорошая практика, поскольку она не устраняет и даже не обрабатывает ошибку, но именно так вы бы продолжали повторять цикл.

2 голосов
/ 31 марта 2012

Вы можете предоставить пустой улов:

   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){}
   }
0 голосов
/ 01 апреля 2012

Вам нужен цикл while, а не цикл for. Тогда вы можете поймать исключение и продолжать идти. Это продолжит цикл при обработке исключения способом, выбранным вами. Конечно, for с оператором continue в обработчике исключений будет делать то же, что и в принятом ответе. Упс!

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++;
    }
...