SocketTimeoutException помогите обработать ошибку

235
26 ноября 2016, 19:19

При выполнении кода:

for (int j = a ; j <= b; j++) {
    try {
        Document doc = Jsoup.connect("какой-то URL" + j).ignoreHttpErrors(true).timeout(1000 * 5).get();
    }
}

Иногда выскакивает ошибка SocketTimeoutException.

Могу ли я обработать ее таким образом, чтобы цикл продолжил работу с места возникновения ошибки? Верна ли моя реализация?

catch (SocketTimeoutException ste) {
    System.out.println("Не удаётся подключиться. Пробуем снова");
    j--;
    continue;
}
Answer 1

могу ли я обработать ее таким образом, чтобы цикл продолжил работу с места возникновения ошибки?

Да, можете.

Верна ли моя реализация?

Да, верна.

Для проверки Вы можете изначально задать маленький тайм-аут.

Например, результат выполнения вот этого кода:

for (int j=1; j<=10; j++) {
    try {
        System.out.println("Итерация #" + j);
        Document doc = Jsoup.connect("https://www.yandex.ru/").timeout(100).get();
        System.out.println(" - Ок");
    } catch (SocketTimeoutException ste) {
        System.out.println(" - Fail");
        j--;
        continue;
    }
}

У меня вот такой:

Итерация #1
 - Ок
Итерация #2
 - Fail
Итерация #2
 - Ок
Итерация #3
 - Ок
Итерация #4
 - Ок
Итерация #5
 - Fail
Итерация #5
 - Ок
Итерация #6
 - Ок
Итерация #7
 - Ок
Итерация #8
 - Fail
Итерация #8
 - Ок
Итерация #9
 - Ок
Итерация #10
 - Fail
Итерация #10
 - Fail
Итерация #10
 - Ок

Разумеется, у Вас он может быть другой.

READ ALSO
Не совсем понятно, почему ответ именно такой

Не совсем понятно, почему ответ именно такой

Итак есть программа, которая выводит следующее:

245
bluetooth android

bluetooth android

Приложение вылетает если блюзуз на устройстве не включен

205
Поиск в приложении: Searchable Activity, Searchable Dialog

Поиск в приложении: Searchable Activity, Searchable Dialog

Хочу сделать поиск в определенной активити в приложении, немного запуталась в тьюториалахХочу добавить в MainActivity, стандартный поиск при нажатии...

270