If条件下的空指针异常

时间:2012-10-21 17:02:36

标签: java nullpointerexception

     Product p = dao.checkProduct(pnumber);
     ExpensiveProduct ep = dao.checkexpensiveProduct(pnumber);
     if ((p.getNumber() == null)&&(ep.getNumber()==null) ){ // java.lang.NullPointerException 
     //do something

     }else{
    //do something

      }

为什么这句话给出了java.lang.NullPointerException 我还有其他方法可以检查吗?

5 个答案:

答案 0 :(得分:3)

此代码可以抛出NPE的唯一非平凡的可能性是pnumber Integer checkProduct()checkexpensiveProduct()期望int(或类似)。

其他琐碎的原因是daopnull(易于检查)。

答案 1 :(得分:2)

试试这样:

if ((p != null) && (p.getNumber() == null) && (ep != null) && (ep.getNumber()==null) ){

答案 2 :(得分:1)

当您调用方法或访问NullPointerException对象的属性时,会出现

null个(NPE)。

要检查null,您可以在尝试使用它们之前打印变量的值,或者使用调试器逐步执行程序,并在到达行所在位置时检查变量的值是什么异常发生。

编辑:
关于你的评论

  

我需要检查p.getNumber()和ep.getNumber(),它们都返回null并获取该语句

现有代码

if ((p.getNumber() == null)&&(ep.getNumber()==null) )

已经这样做了。由于您在该行上获得了NPE,p本身为null,或epnull,或两者兼而有之。您应该检查设置了checkProduct()checkexpensiveProduct()的{​​{1}}和p方法,看看它们是否正常工作。

答案 3 :(得分:1)

检查你的p变量和ep变量。其中一个是null.check  为什么

 dao.checkProduct(pnumber)  

dao.checkexpensiveProduct(pnumber);返回null

答案 4 :(得分:0)

NullPointerException的是哪一行?请确保pep不为空。