繁体   English   中英

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

[英]No null pointer exception after calling method of null object

我是编程新手,并且大部分时间都在使用Java。 通常,如果我不小心尝试从null变量中调用方法,则会得到null指针异常。 但是,在一种情况下,我发现程序执行被卡住了(仍在运行,但不会再执行任何行)而没有产生异常。

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

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

什么原因导致对对象变量为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();
}

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

好吧,我必须确定要回答您的代码,但是它很可能陷入无限循环。 没有人看不到您的代码,就无法确切告诉您原因。

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

例如

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM