java.lang.NullPointerException ist eine der beliebtesten Ausnahmen in der Java Programmierung. Jeder, der in Java arbeitet, hat gesehen, wie dies aus dem Nichts in dem Java Standalone-Programm sowie der Java-Webanwendung auftaucht.
java.lang.NullPointerException
NullPointerException ist eine Laufzeitausnahme, daher müssen wir sie im Programm nicht abfangen. Eine NullPointerException wird in einer Anwendung ausgelöst, wenn wir versuchen, eine Operation auf null durchzuführen, wo ein Objekt benötigt wird. Einige der häufigsten Gründe für NullPointerException in Java-Programmen sind:
- Aufrufen einer Methode auf einer Objektinstanz, aber zur Laufzeit ist das Objekt null.
- Zugriff auf Variablen einer Objektinstanz, die zur Laufzeit null ist.
- Werfen von null im Programm
- Zugriff auf Index oder Änderung des Wertes eines Index eines Arrays, das null ist
- Überprüfen der Länge eines Arrays, das zur Laufzeit null ist.
Beispiele für Java NullPointerException
Lassen Sie uns einige Beispiele für NullPointerException in Java-Programmen betrachten.
1. NullPointerException beim Aufrufen einer Instanzmethode
Wenn wir das obige Programm ausführen, wird folgende NullPointerException-Fehlermeldung ausgegeben.
Wir erhalten eine NullPointerException in der Anweisung t.foo("Hi");
, weil „t“ hier null ist.
2. Java NullPointerException beim Zugriff/Ändern eines Feldes eines null-Objekts
Das obige Programm wirft folgenden NullPointerException-Stack-Trace aus.
NullPointerException wird in der Anweisung int i = t.x;
geworfen, weil „t“ hier null ist.
3. Java NullPointerException, wenn null als Methodenargument übergeben wird
Dies ist eines der häufigsten Vorkommnisse von java.lang.NullPointerException
, weil der Aufrufer das Null-Argument übergibt.
Das folgende Bild zeigt die Nullzeigerausnahme, wenn das obige Programm in der Eclipse IDE ausgeführt wird.
4. java.lang.NullPointerException, wenn null geworfen wird
Nachfolgend finden Sie der Ausnahmestapelablauf des obigen Programms, der eine NullPointerException aufgrund der Anweisung throw null;
anzeigt.
5. NullPointerException beim Abrufen der Länge eines Null-Arrays
6. NullPointerException beim Zugriff auf den Indexwert eines Null-Arrays
7. NullPointerException beim Synchronisieren auf einem Null-Objekt
Das synchronized(mutex)
wirft eine NullPointerException, weil das Objekt „mutex“ null ist.
8. HTTP-Status 500 java.lang.NullPointerException
Manchmal erhalten wir eine Fehlerseitenantwort von einer Java-Webanwendung mit einer Fehlermeldung wie „HTTP-Status 500 – Interner Serverfehler“ und der Ursache als java.lang.NullPointerException
.
Dafür habe ich das Spring MVC Beispiel Projekt bearbeitet und die HomeController-Methode wie folgt geändert.
Das folgende Bild zeigt die Fehlermeldung, die von der Webanwendungsantwort ausgelöst wurde.
Hier ist der Ausnahmestapel:
Die Ursache ist eine NullPointerException in der Anweisung user.getUserId().toLowerCase()
, weil user.getUserId()
null zurückgibt.
Wie erkennt man java.lang.NullPointerException
Die Erkennung von NullPointerException ist sehr einfach, schauen Sie einfach auf die Ausnahmespur, und sie zeigt Ihnen den Klassennamen und die Zeilennummer der Ausnahme. Schauen Sie dann den Code an und sehen Sie, was möglicherweise null ist und die NullPointerException verursacht. Schauen Sie sich einfach alle oben genannten Beispiele an, aus dem Stapelverfolgungsprotokoll ist sehr klar, was die Nullzeiger Ausnahme verursacht.
Wie behebt man NullPointerException
java.lang.NullPointerException ist eine unbeaufsichtigte Ausnahme, daher müssen wir sie nicht abfangen. Die Nullzeiger-Ausnahmen können durch Null-Überprüfungen und vorbeugende Kodierungstechniken verhindert werden. Schauen Sie sich untenstehende Codebeispiele an, die zeigen, wie man java.lang.NullPointerException vermeiden kann.
Codierungsbest Practices zur Vermeidung von NullPointerException
1. Betrachten wir die untenstehende Funktion und achten auf Szenarien, die eine Null-Zeiger-Ausnahme verursachen können.
Die NullPointerException kann auftreten, wenn das Argument als null übergeben wird. Die gleiche Methode kann wie folgt geschrieben werden, um eine NullPointerException zu vermeiden.
2. Wir können auch eine Nullüberprüfung für das Argument hinzufügen und bei Bedarf IllegalArgumentException werfen.
3. Wir können den ternären Operator verwenden, wie im folgenden Beispielcode gezeigt.
4. Verwenden Sie String.valueOf() anstelle der toString() Methode. Zum Beispiel ist der Code für die Methode PrintStream println() wie folgt definiert.
Das folgende Code-Snippet zeigt das Beispiel, in dem die valueOf() Methode anstelle von toString() verwendet wird.
5. Schreiben Sie Methoden, die leere Objekte zurückgeben, anstatt null, wo immer möglich, zum Beispiel leere Liste, leerer String, etc.
6. In den Sammlungsklassen sind einige Methoden definiert, um NullPointerException zu vermeiden. Sie sollten sie verwenden. Zum Beispiel contains(), containsKey() und containsValue().
Referenz: API-Dokument
Source:
https://www.digitalocean.com/community/tutorials/java-lang-nullpointerexception