ExceptionInInitializer-Fehler in Java
-
Kurze Einführung in
ExceptionInInitializerErrorin Java -
Behandeln Sie den
ExceptionInInitializerErrorin 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
