NullPointerException в методе выбора DOM - PullRequest
1 голос
/ 17 августа 2011

Я получаю эту ошибку

NullPointer

08-16 22:55:46.360: ERROR/AndroidRuntime(11047): Caused by: java.lang.NullPointerException
  08-16 22:55:46.360: ERROR/AndroidRuntime(11047):     at com.fttech.htmlParser.releaseInfo.onCreate(releaseInfo.java:62)
08-16 22:55:46.360: ERROR/AndroidRuntime(11047):     at  android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1048)
08-16 22:55:46.360: ERROR/AndroidRuntime(11047):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1712)

Это указывает на мой элемент здесь

    Element paragraph = overview.select("p").last();

Я использую это, чтобы получить статью

    try {
        doc = Jsoup.connect(url).get();
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } 
    if(doc == null){
        Toast.makeText(this, "Couldnt retrieve game info", Toast.LENGTH_SHORT);
    }
    else{

    // Get the overview div
    Element overview = doc.select("div#object-overview").last();

1 Ответ

1 голос
/ 17 августа 2011

Каждый раз, когда вы ищите элемент с помощью select ("") вашего вызывающего last () в цепочке, который предполагает, что он всегда находит по крайней мере 1 элемент в ситуации, когда нет слова "p"в документе, когда вы столкнетесь со сбоем.

Это просто простые исключения NullPointerException, вам нужно научиться защищать код:

// If you believe overview could be null
if(overview != null){
    ArrayList<Element> paragraphs = overview.select("p"); // Whatever type select(String) returns
    Element lastParagraph = null;
    if(paragraphs != null){
         lastParagraph = paragraphs.last();
    } else {
     // Deal with not finding "p" (lastParagraph is null in this situation)
    }

   // Continue with lastParagraph 

} else {
  // Deal with overview being null
}

Ошибка 1 Java 1 (прокрутите вниз)

Кроме того, вы не должны на самом деле оборачивать свой код перехватом всех исключений, пытаться перехватывать каждое исключение и обрабатывать их индивидуально.

Поиск API для вашего получения () метод Jsoup get () (затмение говорит вам об этом в любом случае) Выдает IOException, поэтому вы должны просто поймать это.

  try {
        doc = Jsoup.connect(url).get();
    } catch (IOException e) {
        Log.e("Tag", "Jsoup get didn't get a document", e);
    } 

Number 5Ошибка Java (прокрутка вниз)

...