【问题标题】:Java JSoup Exception ignores try catch?Java JSoup Exception忽略try catch?
【发布时间】: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


【解决方案1】:

问题是错误没有被捕获,因为我试图捕获异常。 JSoup 抛出一个扩展错误的对象,而不是异常,所以当我这样做时

try {

} catch (Exception e) {}

我应该做的

try {

} catch (Error e) {}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多