【发布时间】:2017-12-20 03:05:30
【问题描述】:
我有一个程序,它使用 JSoup 连接和解析来自网站的数据。当网站在我给它的 10 秒超时后无法连接时,JSoup 方法会抛出 UncheckedIOException。这可能包含一个 IOException,例如“SSL Peer 意外关闭”或“超时”,这是我过去处理过的 IOException。这很奇怪,因为它包含在一个 try catch 中:
Document document;
try {
document = Jsoup.connect("https://www.website.com").timeout(10000).maxBodySize(0).get();
} catch (Exception e) {
return false;
}
Elements elements = document.select("tr");
for (Element e : elements) {
System.out.println(e.text());
}
return true;
我已经完成了各种变通方法,例如将方法包装在 try catch 中,使方法抛出异常并在更高的位置处理它,以及上面我已经隔离了导致问题的行并仅将其包装在试着抓。我尝试过捕获 Exception、IOException、UncheckedIOException 等,但由于错误以某种方式渗透,最终仍会导致整个应用程序崩溃。
我从来没有遇到过这样的事情。为什么 try catch 不能处理错误?是 JSoup 设置错误系统的方式吗?这不可能是对的,不是吗?如果有帮助,我正在使用 JSoup 1.11.2,从 https://jsoup.org/download 下载。
【问题讨论】:
-
能否在程序崩溃时发布堆栈跟踪并为我们指出代码行号?
-
@luksch 如果它再次发生我会的,但它非常罕见,有时不会在 24 小时内发生一次。
标签: java exception try-catch jsoup