调用null对象的方法后没有空指针异常

时间:2014-08-12 14:47:42

标签: java debugging nullpointerexception null

我是编程新手,并且主要使用java。通常,如果我意外地尝试从null变量调用方法,我会得到一个空指针异常。但是,在一个案例中,我发现程序执行刚刚被卡住(仍在运行,但不会再执行任何行),而不会产生异常。

调用对象变量为null的方法会产生空指针异常的原因是什么?

更重要的是,如何在将来避免这种情况,因为如果在该行生成空指针异常,则更容易找到问题。

2 个答案:

答案 0 :(得分:4)

  

方法调用对象变量的原因是什么?   null不会产生空指针异常吗?

它总是生成 NPE。但是可以隐藏"它,如果你发现异常并且什么都不做,就像这样:

MyClass myVar; // myVar is not instanciated
try {
    myVar.myFct(); // NPE is thrown here !
} catch (NullPointerException npe) {
    // do nothing : **can be dangerous, don't do this ! **
    // basic code here should be at least: npe.printStacktrace();
}

在这种情况下,会抛出异常,但用户(或您)将永远不会看到它被抛出。

答案 1 :(得分:0)

嗯,我必须看到你的代码肯定会回答,但它可能会陷入无限循环。没有人看到你的代码,没有人能告诉你原因。

下次,只需添加一个if循环来检查以确保该值不为空。

例如

 if ( variableName !== null)
      {
         // work properly
      } 
 else 
       {
            //print out error message
       }

您可以使用异常捕获异常,但我认为这是一种更好的方法。