如何在异常后保留代码 运行
How to keep the code running even after exception
我正在使用 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。
有没有一种方法可以跳过出现异常的 URLs,以便代码 运行s 用于剩余的代码。
您可以将调用包装在 try { ... } catch (E e) { ... }
子句中
try {
// Connect to the website
} catch (SocketTimeoutException ste) {
ste.printStackTrace();
}
您需要 try-catch 块中的代码,捕获此异常后,您可以通过将其写入记录器等来处理。处理异常将使程序继续。
您应该在循环中使用 try
-catch
:
public static void main(String[] args){
for (int i=0; i<10; i++) {
try {
//your code goes here
} catch (ExceptionType name) {
//error-handling code
}
}
}
了解更多 here。
我正在使用 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。
有没有一种方法可以跳过出现异常的 URLs,以便代码 运行s 用于剩余的代码。
您可以将调用包装在 try { ... } catch (E e) { ... }
子句中
try {
// Connect to the website
} catch (SocketTimeoutException ste) {
ste.printStackTrace();
}
您需要 try-catch 块中的代码,捕获此异常后,您可以通过将其写入记录器等来处理。处理异常将使程序继续。
您应该在循环中使用 try
-catch
:
public static void main(String[] args){
for (int i=0; i<10; i++) {
try {
//your code goes here
} catch (ExceptionType name) {
//error-handling code
}
}
}
了解更多 here。