2011-08-17 3 views
1

나는 여기에 내 요소에 난 기사NullPointerException가

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(); 
를 검색하려면이 옵션을 사용하고

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

을이 오류

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) 

그것의 포인팅가 계속

+0

개요 null 또는 overview.select 수있다 ("P") 널 (null) 일 수있다. 가능한 HTML 문자열을 기록하고 볼 수 있습니까? –

+0

일부는 기록했지만, 완벽하게 작동하지만 http://pc.gamespy.com/pc/robot-entertainment-project-1-untitled/이 링크는 // Element overview = doc.select (" div # object-overview "). last(); 나는 그것을 시도하고 기록한다. – yoshi24

+0

또한이 링크도 http://xbox360.gamespy.com/xbox-360/street-fighter-iii-third-strike-online-edition/ – yoshi24

답변

1

언제든지 이 항상이라고 가정하는 체인에서 select ("")를 호출하여 last()를 호출하는 요소를 찾으면 문서에 "p"라고 말한 상황에서 atleast 1 요소를 찾습니다. 언제 충돌이 발생할 것입니다.

그냥 간단한 NullPointerExceptions를을, 당신은 방어 코딩을 배울 필요가 :

// 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 
} 

Number 1 Java Error 또한

당신은 정말 시도, 캐치 모든 예외 코드를 감싸 안 (아래로 스크롤) 각 예외를 잡아서 개별적으로 처리하십시오.

get() 메소드 Jsoup get() (이클립스는 어쨌든 이것을 알려줍니다)에 대한 API를 검색하면 IOException이 발생하므로 그냥을 잡아야합니다.

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

Number 5 Java Error은 (스크롤)

+0

고마워! 이 질문을 몇 가지 방법으로 시도하고 답을 올바르게 표시 할 것입니다. 또한 링크에 감사드립니다. 그 도움이. 또한 무엇을 어떻게해야하고 이들을 예외로 삼아야합니까? – yoshi24

+1

@edited 설명에 대한 답변 – Blundell

+0

나는 캐치에서 오류를 기록하는 것을 잊어 버리고있었습니다. 루프를 시도 할 때까지 반복 할 수 있습니까? 또는 이것은 불필요한 것일 수 있습니다. 서비스가 좋지 않아 서버가 다운되거나 서버가 다운 되었기 때문입니다. – yoshi24