Null-Check wirft NullPointerException
Manchmal passiert es, dass ich geschrieben habe, einen code zu überprüfen, NullPointerException, wie unten
if(str!=null)
{
doSomething();
}
- und null-check selbst wirft NUllPointerException.
Wie es zu lösen.
Bearbeitet:
Eigentlich ist dieser code war immer null-Zeiger ist,
Map params = new HashMap();
if(params != null && params.get("requestType"))
{
//some null safe code goes here
}
ich Verstand später, dass die params.get() war das werfen von null-pointer-exception.
Können Sie Ihre vollständigen code ??
Sie nicht haben, code zu prüfen, "NullPointerException", wie Sie sagen, aber du hast code, der überprüft, ob
Sie, dass der check nicht werfen Ausnahmen. vielleicht hast du einfach if (str!=null); { } oder if (str.foobar() != null) { }
Wie könnte man throws NullPointerException, wenn es nicht befassen sich mit Objekt-manipulation?
Sie nicht haben, code zu prüfen, "NullPointerException", wie Sie sagen, aber du hast code, der überprüft, ob
null
. Es ist unmöglich, diesen code selbst zu werfen einer NullPointerException, also muss das problem irgendwo in Ihrem code, an einem Ort, den Sie noch nicht veröffentlicht noch nicht SO.Sie, dass der check nicht werfen Ausnahmen. vielleicht hast du einfach if (str!=null); { } oder if (str.foobar() != null) { }
Wie könnte man throws NullPointerException, wenn es nicht befassen sich mit Objekt-manipulation?
InformationsquelleAutor prsutar | 2014-11-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Du scheinst zu sagen, dass:
wirft ein
NullPointerException
im Vergleich.Ist unmöglich. Ich erwarte also, dass das, was wirklich geschieht, ist eine der folgenden:
Haben Sie fehlinterpretiert die Stapel-Ablaufverfolgung, und die NPE wird nicht geworfen es.
Ist der aktuelle code ist wesentlich anders zu veranschaulichenden Beispiel.
Sie nicht ausführen von code, die Sie denken, dass Sie ausgeführt werden. Zum Beispiel, Sie sind vielleicht nicht neu kompiliert ... oder Sie kann ausgeführt werden, eine veraltete Kopie der
.class
oder.jar
Datei.Haben Sie es geschafft, ernst zu verwirren Sie Ihre IDE. (Manchmal kann man sich sehr seltsames Verhalten von einer verwirrten IDE ...)
Die einzigen Situationen, in denen das code geben könnte eine NPE, ist nicht ein Artefakt ist etwas anderes, das Sie tun, falsch ist, wenn eine beschädigte Java - (oder IDE) - installation, oder wenn die hardware fehlerhaft ist. Ich würde Preisnachlass diese Erklärungen grundsätzlich als unglaubwürdig.
Update
Nun sagen Sie, dass:
wirft eine NPE in
params.get
. Ich muss sagen, dass dies Unsinn ist.Den code nicht kompilieren. Die
params.get
rufen Sie nicht wieder etwas, dasboolean
oder automatisch umgesetzt werden, um eineboolean
.Wenn wir ignorieren die Zusammenstellung von Fehlern, dann
params.get
auf einen thread beschränkt map nur wirft eine NPE wennparams
istnull
. Diese Karte ist thread-beschränkt, und der vorherigen Prüfung stellt sicher, dassparams
ist nichtnull
.Meiner früheren Schlussfolgerungen stehen. Ist dies unmöglich.
Hinweis: diese könnte ein threading-problem. Es ist möglich, die intermittierende NPE ist es, wenn Sie ein update eines
HashMap
mit einem thread, und Lesen Sie es mit einem anderen, und Sie nicht ordnungsgemäß synchronisiert wird.vor kurzem habe ich die Arbeit auf ein Projekt unterstützen, das die Datei wurde jsp-Datei und code geschrieben, in scriptlet gab NPE an die Bedingung wie oben, so auch die Frage stellen, thnx für die Antwort.
Mein Fazit ist, dass der code in das eigentliche Projekt wurde wesentlich Verschieden die Beispiele in deiner Frage. Ich fürchte, wir können nicht geben Sie aussagekräftige Antworten, wenn Sie zeigen uns den falschen code.
InformationsquelleAutor Stephen C
Haben Sie geprüft Sie es richtig kann mir erklären Szenario. Und ist es in java.
Wenn es in Java dann finden Sie hier einen Beispiel-code, der funktioniert gut, Sie cross-check.
Wenn es eine lokale variable ist auch, es funktioniert gut.
str != null
eine exception wirft.InformationsquelleAutor girish babu velivela
Hier, wie Sie Sie beschrieben haben, dass eine nullpointer-exception ist aufgetreten im ur-Programm . der null-check was die nullpointer exception
hier, wenn u check ur komplette Programm . nur eine Sache läuft hier falsch, dass ist str null ist hier also es ist ein geben u eine nullpointer exception . plz-check ur Programm ein weiteres mal ......
!=
operator nicht werfen einer NullPointerException. Bitte entfernen Sie Ihre falsche und verwirrende Antwort.InformationsquelleAutor Ketan G