Un evento inesperado y no deseado que interrumpe el flujo normal de un programa se denomina Excepción.
Hay principalmente dos tipos de excepciones en Java:
1. Excepción marcada
2. Excepción no verificada
ExceptionInInitializerError es la clase secundaria de y, por lo tanto, es una excepción no verificada. JVM genera automáticamente esta excepción cuando JVM intenta cargar una nueva clase ya que, durante la carga de la clase, esta excepción también actúa como una señal que nos dice que se ha producido una excepción inesperada en un bloque inicializador estático o en la asignación de valor al variable estática.
Básicamente, hay dos casos en los que ExceptionInInitializerError puede ocurrir en un programa Java:
1. ExceptionInInitializerError al asignar valor a la variable estática
En el siguiente ejemplo, asignamos una variable estática a 20/0 donde 20/0 da un comportamiento aritmético indefinido y, por lo tanto, ocurre una excepción en la asignación de la variable estática y, en última instancia, obtendremos ExceptionInInitializerError.
Java
// Java Program for showing the ExceptionInInitializerError // While Assigning Value To The Static Variable class GFG { // assignment of static variable static int x = 20 / 0; public static void main(String[] args) { // printing the value of x System.out.println("The value of x is " + x); } }
2. ExceptionInInitializerError al asignar un valor nulo dentro de un bloque estático
En el siguiente ejemplo, hemos declarado un bloque estático dentro del cual creamos una string s y le asignamos un valor nulo, y luego estamos imprimiendo la longitud de la string, por lo que obtendremos NullPointerException porque estábamos tratando de imprimir la longitud de un string que tiene su valor como nulo y como vemos que esta excepción ocurre dentro del bloque estático, entonces obtendremos ExceptionInInitializerError.
Java
// Java Program for showing the ExceptionInInitializerError // While Assigning Null Value Inside A Static Block class GFG { // declaring a static initializer block static { // creating a string and assigning a null value to // it String s = null; // printing the length of string but as the string // is null so an exception occur in the static block System.out.println(s.length()); } public static void main(String[] args) { System.out.println("GeeksForGeeks Is Best"); } }
¿Cómo resolver Java.lang.ExceptionInInitializerError?
- Podemos resolver java.lang.ExceptionInInitializerError asegurándonos de que el bloque de clases del inicializador estático no genere ninguna excepción de tiempo de ejecución.
- También podemos resolver esta excepción asegurándonos de que la variable estática de inicialización de las clases tampoco arroje ninguna excepción de tiempo de ejecución.
Publicación traducida automáticamente
Artículo escrito por mroshanmishra0072 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA