Android 如何避免使用IOException和SocketTimeoutException JSoup强制关闭?

Android 如何避免使用IOException和SocketTimeoutException JSoup强制关闭?,android,jsoup,Android,Jsoup,我正在使用此代码检索html页面并对其进行解析 while(doc == null && retry<5){ retry++; try { doc = Jsoup.connect(url).get(); } catch (IOException e) { Log.e("ReleaseInfo", "JS

我正在使用此代码检索html页面并对其进行解析

while(doc == null && retry<5){
                retry++;
                try {
                    doc = Jsoup.connect(url).get();
                } catch (IOException e) {
                   Log.e("ReleaseInfo", "JSoup get didnt get a document", e);


                }
正如您所看到的,我用log语句捕获错误。唯一的例外是告诉我这件事

08-17 12:54:11.535: ERROR/ReleaseInfo(5960): JSoup get didnt get a document
08-17 12:54:11.535: ERROR/ReleaseInfo(5960): java.net.SocketTimeoutException
08-17 12:54:11.535: ERROR/ReleaseInfo(5960):     at org.apache.harmony.luni.net.PlainSocketImpl.read(PlainSocketImpl.java:564)
08-17 12:54:11.535: ERROR/ReleaseInfo(5960):     at org.apache.harmony.luni.net.SocketInputStream.read(SocketInputStream.java:88)
08-17 12:54:11.535: ERROR/ReleaseInfo(5960):     at java.io.InputStream.skip(InputStream.java:258)
08-17 12:54:11.535: ERROR/ReleaseInfo(5960):     at org.apache.harmony.luni.net.SocketInputStream.skip(SocketInputStream.java:93)
08-17 12:54:11.535: ERROR/ReleaseInfo(5960):     at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl$ChunkedInputStream.skipOutstandingChunks(HttpURLConnectionImpl.java:374)
如何使我的代码在文档未被检索时不强制关闭,从而抵御此错误

另外,我希望捕获并响应导致应用程序强制关闭的异常

08-17 16:27:29.245: ERROR/ReleaseInfo(8641): JSoup get didnt get a document
08-17 16:27:29.245: ERROR/ReleaseInfo(8641): java.io.IOException: 404 error loading URL http://pc.gamespy.com/web-games/parking-wars-2/
08-17 16:27:29.245: ERROR/ReleaseInfo(8641):     at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:387)
08-17 16:27:29.245: ERROR/ReleaseInfo(8641):     at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:364)
08-17 16:27:29.245: ERROR/ReleaseInfo(8641):     at org.jsoup.helper.HttpConnection.execute(HttpConnection.java:143)
08-17 16:27:29.245: ERROR/ReleaseInfo(8641):     at org.jsoup.helper.HttpConnection.get(HttpConnection.java:132)

您显示的日志条目表明您捕获了异常并将其作为错误打印到日志中,正如您所期望的那样。这两个条目都不应强制关闭你的应用程序。还有其他条目吗?例如,如果您重试5次后仍未建立连接,则“doc”将等于null,并且以下行将导致未捕获的nullPointerException,然后将关闭您的应用程序:

overview = doc.select("div#object-overview").last();

您显示的日志条目表明您捕获了异常并将其作为错误打印到日志中,正如您所期望的那样。这两个条目都不应强制关闭你的应用程序。还有其他条目吗?例如,如果您重试5次后仍未建立连接,则“doc”将等于null,并且以下行将导致未捕获的nullPointerException,然后将关闭您的应用程序:

overview = doc.select("div#object-overview").last();

如果你能帮忙,那就太好了,如果不需要你的评论。如果你能帮上忙那就太好了,如果不需要你的评论的话。并将被标记这就是问题所在。因此,我所做的是围绕overview=doc.select(“div#object overview”).last()展开的;使用if(doc!=null){这就解决了问题。它现在记录了错误,而没有强制关闭它。这也帮助了我,处理异常是一件事,但考虑到以后要做什么是一个有趣的问题,请让他们再试一次,或者直接返回到上一个视图。这就是问题所在。因此,我所做的工作围绕着overview=doc.select(“div#object overview”).last();with if(doc!=null){就是这样做的。它现在记录了错误,而没有强制关闭它。这对我也有帮助,处理异常是一件事,但考虑到以后要做什么是一个有趣的问题,请让他们再试一次或返回到上一个视图。