如何在异常后保持代码运行

时间:2018-05-08 21:11:11

标签: java exception-handling jsoup

我正在使用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,以便代码运行其余的。

3 个答案:

答案 0 :(得分:1)

您可以在try { ... } catch (E e) { ... }子句

中包含您的电话
try {
    // Connect to the website
} catch (SocketTimeoutException ste) {
    ste.printStackTrace();
}

答案 1 :(得分:1)

您应该在循环中使用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

答案 2 :(得分:0)

您需要try-catch块中的代码,并且在捕获此异常之后,您可以通过将其写入记录器左右来处理。处理异常将使程序继续。