2012-02-13 147 views
0

我有一個類文件,當我編譯顯示空指針異常在一個特定的行中。我處理如下的空檢查。空指針異常檢查

108 doc = Jsoup.parse(html, brandUrl); 

109 Element div = doc.getElementById("eventTTL"); 
110 String attr = div.attr("eventTTL"); 
111 Date closingDate = new Date(Long.parseLong(attr)); 
112 Elements mainForm = doc.select("div#main-form"); 
113 Elements mainDivs = mainForm.select("DIV"); 

在com.textT.at.Chickyur.main(Chickyur.java:110)顯示java.lang.NullPointerException

if(div != null) 
String attr = div.attr("eventTTL"); 

Also tried 
if(div.attr("eventTTL") != null) 
String attr = div.attr("eventTTL"); 

我仍然不斷收到異常。哪裏不對?有什麼想法嗎?

+2

你在哪裏得到NullPointerException?郵政堆棧跟蹤和相關的代碼。 – m0skit0 2012-02-13 19:39:53

回答

2

我無法以上述代碼究竟是如何結構化發佈的代碼告訴我們,但這樣就可以解決NullPointerException

Element div = doc.getElementById("eventTTL"); 
String attr = ""; 

if(div != null) 
    attr = div.attr("eventTTL"); 

如果繼續後得到的異常,我猜問題是別處在代碼中,你需要更新你的例子。

0

沒有看到你的堆棧跟蹤,我只是猜測,但:

從你說的路線是錯誤,這意味着div爲空,這表明前行是罪魁禍首,這這意味着你的doc沒有元素的ID爲eventTTL

請確保您的doc有效,並且它實際上有一個eventTTL

1

您所做的代碼更改將導致編譯錯誤。沒有類文件將被創建,因此您可能正在運行舊的破碎類文件。

你可能想要做這個(擴展if的範圍)。

doc = Jsoup.parse(html, brandUrl); 

Element div = doc.getElementById("eventTTL"); 
if(div != null) { 
    String attr = div.attr("eventTTL"); 
    Date closingDate = new Date(Long.parseLong(attr)); 
    Elements mainForm = doc.select("div#main-form"); 
    Elements mainDivs = mainForm.select("DIV"); 
    ... 
}