1

次のコードでは、

Document doc = null;
doc = Jsoup.parse(page):

String myexample = "My example";

Elements myexamples = doc.select("div.yourOptions p");
   if (myexamples != null && myexamples.first().ownText() != null) myexample = myexamples.first().ownText();

私のアプリケーションのユーザーの 99.9% にとって、すべてが良いようです。

しかし、7 行目 (と同等) で NullPointerException を含むいくつかの StackTraces を受け取りました。 StackTrace :

java.lang.RuntimeException: An error occured while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:278)
at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
at java.util.concurrent.FutureTask.run(FutureTask.java:137)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
at java.lang.Thread.run(Thread.java:856)
Caused by: java.lang.NullPointerException
at com.tomtom.joe.mobile.Suivi$BackgroundAsyncTask.doInBackground(Suivi.java:369)
at com.tomtom.joe.mobile.Suivi$BackgroundAsyncTask.doInBackground(Suivi.java:1)
at android.os.AsyncTask$2.call(AsyncTask.java:264)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
... 4 more

NullPointerException から保護するにはどうすればよいですか? "myexamples.first().ownText()" の内容はユーザーによって異なります。しかし、「myexamples.first().ownText()」はnullになる可能性があると思います...

例 :

<div class="yourOptions"><div class="cockpitContent resizeHeight1">
<h2 class="Title">Title</h2>
<p>Options</p>
<p>Options 2</p>
</div></div>
4

2 に答える 2

2

myexamples.first()値がチェックされていない唯一の値ですnull。これは、エラーの原因がこの値であることを示唆しています。

于 2013-02-26T13:48:11.973 に答える
0
Elements elements = doc.select("div.cockpitContent > p");
for(Element element : elements){
    if(element != null && element.text() != null){
        String value = element.text();
        // do your job
    }
}

注意: このコードはテストしていません。これを試してみてください。

于 2013-02-26T14:17:47.697 に答える