prs*_*tar 2 java null exception nullpointerexception
有时碰巧我编写了一个代码来检查NullPointerException,如下所示,
if(str!=null)
{
doSomething();
}
Run Code Online (Sandbox Code Playgroud)
并且null检查本身会抛出NUllPointerException.
如何解决它.
编辑:其实这段代码是空指针,
Map params = new HashMap();
if(params != null && params.get("requestType"))
{
//some null safe code goes here
}
Run Code Online (Sandbox Code Playgroud)
我后来才知道params.get()抛出空指针异常.
Ste*_*n C 10
你好像在说:
if (str != null) {
doSomething();
}
Run Code Online (Sandbox Code Playgroud)
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
}
Run Code Online (Sandbox Code Playgroud)
抛出一个NPE params.get.我不得不说这是胡说八道.
代码不会编译.该params.get调用不会返回boolean可以自动转换为a的内容boolean.
如果我们忽略编译错误,那么params.get线程限制地图上只能如果抛出NPE params是null.此映射是线程限制的,之前的检查确保params不是null.
我先前的结论是有道理 这是不可能的.
提示:这可能是一个线程问题.如果您HashMap使用一个线程更新a 并使用另一个线程读取它,并且您没有正确同步,则可能会出现间歇性NPE .
| 归档时间: |
|
| 查看次数: |
13575 次 |
| 最近记录: |