Вместо перехвата Java MalformedURLException сборка не удалась

Новичок в Java, поэтому, пожалуйста, потерпите меня: (и обратите внимание, что этот вопрос касается исключений Java, а не Jsoup)

при использовании Jsoup для получения Html-страницы: (Jsoup.connect(current_url._name).get();), я пытался отловить все 5 возможных исключений в соответствии с документацией Jsoup: здесь

программа отлично работает с хорошими URL-адресами, но когда я умышленно написал 1 URL с ошибкой, чтобы проверить, что происходит, я с удивлением обнаружил, что исключение не было перехвачено, вместо этого программа запускалась, а затем "Сбой сборки"? когда только при создании программы нет сбоев, так что я думаю, что это не совсем
построить вопрос.

вот код:

// load html and check them:
    for(URL current_url : URLs)
    {
        // no keyword - all getting 'yes'
        if(keywords.isEmpty())
        {
            current_url._stat = URL_stat.YES;
        }
        // there are keywords - get pages and check them
        else
        {
            Document html_doc;
            // try to get document and catch all errors
            try
            {
                html_doc = Jsoup.connect(current_url._name).get();
            }
            catch(MalformedURLException e)
            {
                System.out.println("the request " + current_url._name +
                                   " URL is malformed");
                System.out.println(e.getMessage());
                current_url._stat = URL_stat.ERROR;
            }
            catch(HttpStatusException e)
            {
                System.out.println("page " + current_url._name + " response"
                                   + " is not ok");
                System.out.println(e.getMessage());
                current_url._stat = URL_stat.ERROR;
            }
            catch(UnsupportedMimeTypeException e)
            {
                System.out.println("page " + current_url._name+ " mime type"
                                   + " is not supported");
                System.out.println(e.getMessage());
                current_url._stat = URL_stat.ERROR;
            }
            catch(SocketTimeoutException e)
            {
                System.out.println("connection to " + current_url._name + 
                                   " times out");
                System.out.println(e.getMessage());
                current_url._stat = URL_stat.ERROR;
            }
            catch(IOException e)
            {
                System.out.println("an error occurred while getting page " 
                                   + current_url._name);
                System.out.println(e.getMessage());
                current_url._stat = URL_stat.ERROR;
            }
            // check if document has paragraphs, if not mark - no

        }
    }

и вывод:

Exception in thread "main" java.lang.IllegalArgumentException: Malformed URL: ttp://cooking.nytimes.com/topics/what-to-cook-this-week
at org.jsoup.helper.HttpConnection.url(HttpConnection.java:76)
at org.jsoup.helper.HttpConnection.connect(HttpConnection.java:36)
at org.jsoup.Jsoup.connect(Jsoup.java:73)
at ex2.Ex2.main(Ex2.java:123)
Caused by: java.net.MalformedURLException: unknown protocol: ttp
at java.net.URL.<init>(URL.java:600)
at java.net.URL.<init>(URL.java:490)
at java.net.URL.<init>(URL.java:439)
at org.jsoup.helper.HttpConnection.url(HttpConnection.java:74)
... 3 more
C:\Users\Administrator\AppData\Local\NetBeans\Cache\8.2\executor-     snippets\run.xml:53: Java returned: 1
BUILD FAILED (total time: 3 seconds)

Спасибо,

1 ответ

Решение

Это связано с тем, что первое создаваемое исключение - это исключение IllegalArgumentException, которое вы не определили ни в одном из своих предложений catch, что препятствует получению пользовательских сообщений об ошибках в любых других блоках catch.

Другие вопросы по тегам