空指针异常检查

时间:2012-02-13 19:38:15

标签: java jsoup

我有一个类文件,当我编译时,它会一直显示特定行中的空指针异常。我处理了如下的空检查。

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");

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

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

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

我仍然不断获得例外。怎么了?有什么想法吗?

3 个答案:

答案 0 :(得分:2)

我无法通过上面发布的代码确切地知道您的代码是如何构建的,但这应该可以修复NullPointerException

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

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

如果您在此之后继续获得例外,我猜这个问题在代码的其他地方,您需要更新您的示例。

答案 1 :(得分: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");
    ...
}

答案 2 :(得分:0)

没有看到你的堆栈跟踪,我只是猜测,但是:

从您说的行是错误,这意味着div为空,这表示前一行是罪魁祸首,这意味着您的doc没有带有ID的元素eventTTL

尝试确保您的doc有效,并确实eventTTL