Null Check throws NullPointerException
You seem to be saying that:
if (str != null) {
doSomething();
}
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:
Map params = new HashMap();
if(params != null && params.get("requestType"))
{
//some null safe code goes here
}
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.
prsutar
Hello, I am a Java/J2EE developer. Technologies I have worked in are J2EE JSP, Servlets, Struts2, Hibernate and Spring.
Updated on June 09, 2022Comments
-
prsutar over 1 year
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.
-
prsutar about 9 yearsrecently i have been working on a support project, that file was jsp file and code written in scriptlet was giving NPE at the condition like above, so asked the question, thnx for reply.
-
Stephen C over 4 yearsMy conclusion is that the code in the actual project was substantially different to the examples in your question. I'm afraid we can't give you meaningful answers if you show us the wrong code.
-
Stephen C over 4 yearsThis is not relevant to the question. The question is about whether
str != null
throws an exception.