java.lang.NullPointerException

java.lang.NullPointerException,java,exception,null,Java,Exception,Null,当一个条件的值为null和不为null时,我使用一个值来执行该条件。 当这个值为null时,我得到了java.lang.NullPointerException 我如何处理这一点,以消除这一例外 我需要值为空和不为空的条件。只需正确检查值是否为null。有条件的,如 if (value == null) 将永远不会引发NullRefePointerException。只有当您尝试访问null引用点指向的任何对象时,才会出现异常。因此,调用方法或访问对象的其他实例成员是不可能的。这是一个非常令人

当一个条件的值为null和不为null时,我使用一个值来执行该条件。 当这个值为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;