2014-11-22 41 views
1

有时会发生,我已经写了代码来检查的NullPointerException像下面,空检查引发NullPointerException异常

if(str!=null) 
{ 
    doSomething(); 
} 

和空检查本身将引发NullPointerException异常。

如何解决它。

编辑: 其实这个代码是越来越空指针,

Map params = new HashMap(); 
if(params != null && params.get("requestType")) 
{ 
    //some null safe code goes here 
} 

我明白晚些时候params.get()被扔空指针异常。

+0

你能发布你的完整代码吗? – 2014-11-22 05:34:33

+1

就像你说的那样,你没有代码来“检查NullPointerException”,但是你有检查'null'的代码。这段代码本身不可能抛出一个NullPointerException,所以这个问题必须在你的代码中的其他地方,在你还没有发布到SO的地方。 – 2014-11-22 05:38:14

+1

检查没有抛出异常。也许你做了(str!= null); {}或if(str.foobar()!= null){} – MeBigFatGuy 2014-11-22 05:48:05

回答

7

你似乎在说:

if (str != null) { 
    doSomething(); 
} 

在比较扔NullPointerException

也就是说不可能。因此,我希望什么是真正发生的事情是下列之一:

  • 你误解堆栈跟踪和NPE是不是被扔在那里。

  • 实际的代码与说明性的例子有很大的不同。

  • 你不执行,你认为你正在执行的代码。例如,您可能没有重新编译它,或者您可能正在执行.class.jar文件的陈旧副本。

  • 您设法严重混淆了您的IDE。 (有时你可以从迷茫IDE得到非常奇怪的行为...)


这样代码可能给一个NPE,是不是另一个事物的假象,你做错了唯一的情况是如果Java(或IDE)安装受损,或者硬件出现故障。我倾向于打折这些解释。


更新

现在你说:

Map params = new HashMap(); 
if(params != null && params.get("requestType")) 
{ 
    //some null safe code goes here 
} 

抛出params.get的NPE。我不得不说这是无稽之谈。

  1. 该代码不会编译。 params.get呼叫不会返回boolean或可以自动转换为boolean的内容。

  2. 如果我们忽略这一点,那么params.get在线程限制的地图上只能抛出一个NPE,如果paramsnull。这张地图线程限制,和以前的检查是为了确保paramsnull

我以前的结论就是这样。

提示:本可能是一个线程的问题。如果您使用一个线程更新HashMap并使用另一个线程读取它,并且您没有正确同步,可能会得到间歇性NPE。

+0

日Thnx @StephenÇ – prsutar 2014-11-24 09:00:01

+0

最近我一直在努力支持项目,该文件是JSP文件,并写在小脚本在像上面的条件是给NPE的代码,所以问的问题,日Thnx答复。 – prsutar 2014-11-24 09:14:13

1

你有没有检查过它可以解释我的情况。这是在Java中。 如果它是在Java中,那么这里是一个示例代码,它可以很好地进行交叉检查。 如果它是一个局部变量,它也可以正常工作。

class string 
{ 
static String str; 
public static void main(String[] args) 
{ 
if(str!=null) 
{ 
System.out.println("hi"); 
} 
else 
{ 
System.out.println("bye"); 
} 
} 
} 
-4

这里你已经描述过在你的程序中发生了一个空指针异常。空检查给出空指针异常

if(str!=null) 
    { 
     doSomething(); 
    } 

这里如果你检查你的完整程序。在这里只有一件事情是错的,那就是str在这里是空的,所以它给了你一个空指针异常。 PLZ检查乌尔计划更多的时间......

+2

使用'!='运算符**的空检查不能**抛出NullPointerException。请删除您的不正确和令人困惑的答案。 – 2014-11-23 14:19:04

相关问题