ExceptionInInitializer-Fehler in Java
-
Kurze Einführung in
ExceptionInInitializerError
in Java -
Behandeln Sie den
ExceptionInInitializerError
in Java - Abschluss
In diesem Artikel lernen wir den ExceptionInInitializerError
in Java kennen.
Kurze Einführung in ExceptionInInitializerError
in Java
ExceptionInInitializerError
ist eine ungeprüfte Ausnahme in Java und das Kind der Klasse Error
. Es fällt in die Kategorie der Laufzeitausnahmen.
Immer wenn die JVM (Java Virtual Machine) in Java einen statischen Initialisierungsblock nicht auswertet oder eine statische Variable instanziiert oder ihr einen Wert zuweist, tritt eine Ausnahme ExceptionInInitializerError
auf. Dies weist darauf hin, dass im statischen Initialisierer etwas schief gelaufen ist.
Immer wenn diese Ausnahme innerhalb des statischen Initialisierers auftritt, behält Java den Verweis auf die eigentliche Ausnahme als Hauptursache bei, indem es die Ausnahme innerhalb des Objekts der Klasse ExceptionInInitializerError
umschließt.
Beispiele für ExceptionInInitializerError
in Java
Basierend auf der obigen Diskussion tritt in schwerwiegenden Fällen ExceptionInInitializerError
auf. Sehen wir uns einige Beispiele an, um es besser zu verstehen.
Beispiel 1: Szenario, in dem wir der statischen Variablen Werte zuweisen.
public class Test {
static int x = 100 / 0;
public static void main(String[] args) {
System.out.println("Value of x is " + x);
}
}
Ausgang:
Exception in thread "main" java.lang.ExceptionInInitializerError
Caused by: java.lang.ArithmeticException: / by zero
at Test.<clinit>(Test.java:4)
Im obigen Code haben wir einer statischen Variablen x
einen 100/0
-Wert zugewiesen, was zu einem undefinierten arithmetischen Verhalten führt, sodass beim Zuweisen von Werten zu der statischen Variablen eine Ausnahme auftritt, die uns schließlich den ExceptionInInitializerError
liefert.
Wir können in der Ausgabe auch beobachten, dass die eigentliche Ausnahme ArithmeticException
in eine Instanz der Klasse ExceptionInInitializerError
eingeschlossen ist.
Beispiel 2: Szenario, in dem innerhalb der statischen Blöcke Nullwerte zugewiesen werden.
public class Test {
static {
String str = null;
System.out.println(str.length());
}
public static void main(String[] args) {}
}
Ausgang:
Exception in thread "main" java.lang.ExceptionInInitializerError
Caused by: java.lang.NullPointerException: Cannot invoke "String.length()" because "str" is null
at Test.<clinit>(Test.java:7)
Im obigen Code haben wir einen statischen Block erstellt, in dem wir eine Zeichenfolge str
mit dem Wert null
haben. Wenn wir also versuchen, seine Länge mit der Methode length()
abzurufen, erhalten wir NullPointerException
, da wir die Länge eines Strings mit null
als Wert ausgeben.
Da diese Ausnahme jedoch innerhalb eines statischen Blocks auftritt, wird sie in die Klasse ExceptionInInitializerError
eingeschlossen, und wir erhalten ExceptionInInitializerError
in der Ausgabe.
Behandeln Sie den ExceptionInInitializerError
in Java
ExceptionInInitializerError
in Java kann vermieden werden, indem folgende Punkte sichergestellt werden:
- Stellen Sie sicher, dass die Initialisierung statischer Variablen in einem Programm keine Runtime Exception auslöst.
- Stellen Sie sicher, dass die statischen Initialisierungsblöcke in einem Programm keine Runtime Exception auslösen.
Abschluss
In diesem Artikel haben wir von ExceptionInInitializerError
in Java erfahren, was darauf hinweist, dass beim Initialisieren einer statischen Variablen oder beim Auswerten eines statischen Blocks einige Ausnahmen aufgetreten sind. Dieser Fehler fungiert als Laufzeit-Wrapper für die zugrunde liegende Ausnahme und stoppt die JVM, bis der Programmierer die zugrunde liegende Ausnahme behebt.
Verwandter Artikel - Java Error
- Adresse wird bereits verwendet JVM_Bind-Fehler in Java
- Android Java.Lang.IllegalStateException behoben: Methode der Aktivität konnte nicht ausgeführt werden
- Ausnahme im Hauptthread Java.Lang.ClassNotFoundException in IntelliJ IDEA
- Ausnahme im Hauptthread Java.Lang.NoClassDefFoundError
- Beheben Sie das Problem, dass Java nicht installiert werden kann. Es gibt Fehler in den folgenden Schaltern
- Beheben Sie den Fehler `Es wurde keine Java Virtual Machine gefunden` in Eclipse