-3

我正在尝试执行 java 程序,但似乎当前代码在这段代码上返回空指针异常:

IntegerDesc yearOfBuildDesc = 
     (IntegerDesc) myConcept.getAllAttributeDescs().get("yearOfBuild");
try {
    query.addAttribute(yearOfBuildDesc,
        yearOfBuildDesc.getAttribute("yearOfBuild"));
}
catch (ParseException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

你知道问题可能来自哪里吗?

4

3 回答 3

2

可能是以下之一:

  • myConceptnull,所以.getAllAttributeDescs()摔倒了。
  • myConcept.getAllAttributeDescs()返回null,所以.get("yearOfBuild")摔倒了。
  • myConcept.getAllAttributeDescs().get("yearOfBuild")return null,导致yearOfBuildDescnull你调用getAttribute它时,这会导致异常。
  • querynull,导致.addAttribute(...)跌倒。
  • 方法内部的某些内容在getAllAttributeDescs调用时会导致空指针异常。
  • 方法内部的某些内容在get调用时会导致空指针异常。
  • 方法内部的某些内容在addAttribute调用时会导致空指针异常。
  • 方法内部的某些内容在getAttribute调用时会导致空指针异常。
  • 您的初始代码抛出 a ParseException,对其printStackTrace方法的调用随后抛出空指针异常(不太可能)。

一般来说,在寻找空指针异常时,您应该寻找以下问题:

  • 选择表达式(即x.y) - 可以xnull
  • 方法调用 - 方法可以抛出空指针异常吗?

我已经排除了这里的可能性,因为这enull你刚刚发现的例外。

于 2013-01-13T21:46:10.063 回答
0

yearOfBuildDesc可能为空。在 try catch 中使用之前进行测试

myConcept也可能为空,请检查。

于 2013-01-13T21:44:10.103 回答
0
yearOfBuildDesc.getAttribute("yearOfBuild");

NullPointerException如果为空,上面的行将抛出yearOfBuildDesc,添加一个空检查。

于 2013-01-13T21:46:13.933 回答