Sometimes it happens that I have written a code to check NullPointerException like below,
if(str!=null)
{
doSomething();
}
and the null check itself throws NUllPointerException.
How to solve it.
Edited: Actually this code was getting null pointer,
Map params = new HashMap();
if(params != null && params.get("requestType"))
{
//some null safe code goes here
}
i understood later that params.get() was throwing null pointer exception.
Have you checked it properly can explain me scenario. And is it in java. If it is in Java then here is a sample code that works fine you cross check. If it is a local variable also it works fine.
You seem to be saying that:
is throwing a
NullPointerException
in the comparison.That is impossible. So I expect that what is really happening is one of the following:
You have misinterpreted the stack trace, and the NPE is not being thrown there.
The actual code is substantially different to the illustrative example.
You are not executing the code that you think you are executing. For example, you might not have recompiled it ... or you may be executing a stale copy of the
.class
or.jar
file.You have managed to seriously confuse your IDE. (Sometimes you can get very strange behaviour from a confused IDE ...)
The only situations where that code might give an NPE that is not an artefact of something else you are doing wrong is if have a damaged Java (or IDE) installation, or if your hardware is faulty. I would discount those explanations as basically implausible.
Update
Now you say that:
throws an NPE in
params.get
. I have to say that this is nonsense.The code won't compile. The
params.get
call doesn't return something that isboolean
or that can be automatically converted to aboolean
.If we ignore the compilation errors, then
params.get
on a thread-confined map can only throw an NPE ifparams
isnull
. This map is thread-confined, and the previous check ensures thatparams
isn'tnull
.My previous conclusions stand. This is impossible.
Hint: this could be a threading problem. It is possible to get intermittent NPE's if you update a
HashMap
with one thread and read it with another, and you don't synchronize properly.