Obsługa błędów połączenia i JSoup

Próbuję stworzyć aplikację, która zeskrobuje zawartość wielu stron w witrynie. Używam JSoup do połączenia. To jest mój kod:

<code>for (String locale : langList){
        sitemapPath = sitemapDomain+"/"+locale+"/"+sitemapName;
        try {
            Document doc = Jsoup.connect(sitemapPath)
                    .userAgent("Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.21 (KHTML, like Gecko) Chrome/19.0.1042.0 Safari/535.21")
                    .timeout(10000)
                    .get();

            Elements element = doc.select("loc");   
            for (Element urls : element) {
                System.out.println(urls.text());
                }
        } catch (IOException e) {
            System.out.println(e);
        }
    }
</code>

Wszystko działa doskonale przez większość czasu. Jest jednak kilka rzeczy, które chcę zrobić.

Po pierwsze, czasami status 404 powróci lub status 500 może 301. Z moim kodem poniżej wydrukuje błąd i przejdzie do następnego adresu URL. Chciałbym móc spróbować przywrócić status URL wszystkich linków. Jeśli strona się łączy, wydrukuj 200, jeśli nie, wydrukuj odpowiedni kod statusu.

Po drugie czasami łapię ten błąd „java.net.SocketTimeoutException: Przekroczono limit czasu odczytu”. Mogę zwiększyć limit czasu, jednak wolałbym spróbować połączyć się 3 razy, po niepowodzeniu po raz trzeci chcę dodać URL do tablicy „nieudanej” więc mogę w przyszłości ponowić nieudane połączenia.

Czy ktoś z większą wiedzą niż ja może mi pomóc?

questionAnswers(2)

yourAnswerToTheQuestion