Fälle, in denen java.lang.nullpointerexception ausgelöst wird

Wir haben diesen Fehler oft in unseren Programmen. java.lang.NullPointerException. Dieser Fehler wird gestartet, wenn Sie versuchen, ein Null-Objekt zu verwenden, das in den folgenden Fällen keinen Wert hat:
  • Rufen Sie eine Null-Methodeninstanz auf.
  • Greifen Sie auf die Instanz eines Null-Objekts zu oder ändern Sie sie.
  • Die Ausnahme soll auslösen.
  • Beim Aufrufen der Länge des Null-Arrays.
  • Beim Zugriff auf Null-Positionen wie z.B. einem Array.
  • Beim Synchronisieren eines Null-Objekts oder bei dessen Verwendung innerhalb eines synchronisierten Blocks.
Was ist das Mittel, um die Ursache zu ermitteln und die Ausnahme zu stoppen, die die Ausführung des Programms beendet hat?

Objekte werden durch Zeiger in java

Ein Objekt ist eine Klasseninstanz oder ein Array, Referenzen sind Zeiger auf diese Objekte und eine Nullreferenz ist Bezieht sich  auf kein Objekt.
Wenn Sie eine Variable deklarieren, setzt Java die x-Variable auf 0 und es wird ein Zeiger erstellt, der auf dieses Objekt verweist. Im folgenden Code deklarieren wir beispielsweise eine Variable x:

int x;
x = 5;
In diesem Beispiel wird die Variable x standardmäßig auf Null gesetzt, und die zweite Zeile, der Wert 5, wird an den Speicherort geschrieben, auf den x zeigt. Java verbietet dem Programmierer, Speicherboxen zu manipulieren, es gibt Ihnen nur Zugriff auf die Methoden des Objekts und nicht auf den Speicherort.

Fälle oder  NullPointerException wird geworfen

1) Rufen Sie eine Methode einer null
Point dot = null; 
dot.getX();
Ausnahme im Thread "main" java.lang.NullPointerException
at Test.main(Test.java:27)
2) Zugriff auf oder Änderung der Instanz eines Nullobjekts.
Der Zugriff auf eine Nullreferenz löst die Ausnahme aus  NullPointerException:

Punkt Punkt = null; 
dot.getX();
Ausnahme im Thread "main" java.lang.NullPointerException
bei Test.main(Test.java:38)
3) Bei Verwendung von throw null
throw überprüft, ob das Argument ungleich null ist, und wenn es Null ist, steigt es  NullPointerException.

IOException nullException = null; 
try {
throw nullException;
} catch (IOException e) {
e.printStackTrace();
}
4) Beim Aufruf des Null-Arrays length

char[] ch = null; 
int Länge = Länge der Kanäle;
5) Beim Zugriff auf Null-Speicherorte wie array
Ein Beispiel ist der Zugriff auf die Boxen eines null.
char[] ch = null; 
Zeichen c = ch[0];
6) Beim Synchronisieren eines null
Sie erhalten  NullPointerException  Wenn Sie versuchen, ein Objekt zu synchronisieren null oder es in einen synchronisierten Block einfügen.

Thread th=null; 
synchronized(th){
System.out.print("Dieser Thread ist synchronisiert");
}

Was sind die Präventionen

  • Der beste Weg, um diese Art von Ausnahme zu vermeiden  Falls Sie das Objekt nicht selbst erstellt haben  ist zu prüfen, ob das Objekt Null ist. Der Code sollte wie folgt geschrieben werden:

    • void display(String phrase){
      //check if sentence is not null
      if(phrase!=null)
      System.out.print(phrase);
      }
      Diese Lösung ist in einigen Fällen nicht optimal, da das Objekt null ist, sodass in der display()-Prozedur nichts passiert.
  • In IDEs wie Eclipse oder Netbeans wird die Nummer der Zeile angezeigt, die den Fehler ausgelöst hat. Dies ist eine gute Möglichkeit, die Art des Fehlers zu identifizieren.
  • Variablen können einen Standardwert wie den String in diesem Code haben:

    • String string=""; 
  • Initialisieren Sie die Kontrollkästchen nach der Deklaration eines Arrays.

    • //Declaration
      Thread[] th=new Thread[3];
      //Initialization
      th[0]=new Thread();
      th[1]=neuer Thread();
      th[2]=neuer Thread();
  • Verwenden Sie boolesche Variablen und Zähler,... usw., um Ihren Code zu optimieren.