java.lang.NullPointerException
当一个条件的值为null和不为null时,我使用一个值来执行该条件。 当这个值为null时,我得到了java.lang.NullPointerException,java,exception,null,Java,Exception,Null,当一个条件的值为null和不为null时,我使用一个值来执行该条件。 当这个值为null时,我得到了java.lang.NullPointerException 我如何处理这一点,以消除这一例外 我需要值为空和不为空的条件。只需正确检查值是否为null。有条件的,如 if (value == null) 将永远不会引发NullRefePointerException。只有当您尝试访问null引用点指向的任何对象时,才会出现异常。因此,调用方法或访问对象的其他实例成员是不可能的。这是一个非常令人
java.lang.NullPointerException
我如何处理这一点,以消除这一例外
我需要值为空和不为空的条件。只需正确检查值是否为
null
。有条件的,如
if (value == null)
将永远不会引发NullRefePointerException。只有当您尝试访问
null
引用点指向的任何对象时,才会出现异常。因此,调用方法或访问对象的其他实例成员是不可能的。这是一个非常令人困惑的问题,但是:
boolean isNull = true;
if (value != null) {
isNull = false;
}
使用if检查变量是否不为null,然后在变量为null时使用else代码块
if (variable != null)
{
// Code when object is not null
}
else
{
// Code when object is null
}
只有在尝试使用空值时才会抛出空指针
比如说,
variable.method();
但是,您应该始终避免出现空指针的情况。当您尝试使用
null
变量调用方法时,会出现NullPointerException
。简单的例子:
String s = null;
int len = s.length(); // NullPointerException because s is null
因此,在调用任何方法之前,您应该检查变量是否为null
,例如:
int len;
if (s == null) {
len = 0;
}
else {
len = s.length(); // Safe, s is never null when you get here
}
请注意,
NullPointerException
通常很容易解决。仔细查看异常的堆栈跟踪;它准确地告诉您异常发生在代码的哪一行。检查该行代码中可能是null
,并检查您是否正在调用某个可能是null
的方法。添加一个检查(或防止相关内容以另一种方式为空)。如其他海报所述,如果您不希望此处的s引用为空,则首先修复导致引用为空的错误。但是,如果引用可以为null是有效的,那么还可以使用三元运算符(Java5 on)执行以下操作
注意:括号是可选的,但在我看来,它们使它更具可读性。+1尽管我对最后一句话不满意。有时我们从API调用中得到
null
,或者希望存储数据库查询的null
结果。所以这并不总是可以避免的。
int len = (s == null) ? 0 : s.length;