java - 即使发生异常,如何保持代码运行
问题描述
我正在使用 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,以便代码为其余的运行。
解决方案
你可以把你的电话包装在一个try { ... } catch (E e) { ... }
子句中
try {
// Connect to the website
} catch (SocketTimeoutException ste) {
ste.printStackTrace();
}
推荐阅读
- reactjs - 如何动态定位 IonPopover 以从按钮显示?
- webassembly - Webassembly 什么时候会支持所有的基本数据类型?
- swift - 带有searchBar swift的Stretchy Header CollectionVC(以编程方式)
- django - IntegrityError:重复键值违反唯一约束
- c++ - 为什么使用 2 个嵌套循环(O(n^2) 复杂度)解决两个和问题,在仅更改循环计数器逻辑时运行得更快?
- javascript - 在html输入字段中加载ajax值
- kendo-ui - Kendo Ui Scheduler 放大和缩小按钮
- python - 获取一列中所有值均为 nan 的行
- svg - 未定义图像上 href 的 SVG 命名空间前缀 xlink
- php - Laravel:注册“语言环境”中间件