首页 > 解决方案 > 即使发生异常,如何保持代码运行

问题描述

我正在使用 Jsoup 连接到网站以获取 HTML 数据。我有一个大约 1000 个 URL 的列表,我需要从中提取数据,并且我正在对这些 URL 进行迭代。对于少数情况,我得到一个例外:

Exception in thread "main" java.net.SocketTimeoutException: connect timed out
at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:85)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:589)

这将停止处理剩余的 URL。我试图将 timeout() 更改为 timeout(0),但这会让代码无休止地为该 URL 运行。

有没有一种方法可以跳过出现异常的 URL,以便代码为其余的运行。

标签: javaexception-handlingjsoup

解决方案


你可以把你的电话包装在一个try { ... } catch (E e) { ... }子句中

try {
    // Connect to the website
} catch (SocketTimeoutException ste) {
    ste.printStackTrace();
}

推荐阅读