我是编程新手,并且主要使用java。通常,如果我意外地尝试从null变量调用方法,我会得到一个空指针异常。但是,在一个案例中,我发现程序执行刚刚被卡住(仍在运行,但不会再执行任何行),而不会产生异常。
调用对象变量为null的方法会产生空指针异常的原因是什么?
更重要的是,如何在将来避免这种情况,因为如果在该行生成空指针异常,则更容易找到问题。
答案 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
}
您可以使用异常捕获异常,但我认为这是一种更好的方法。