Вместо перехвата 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.