Exception in thread main java lang exceptionininitializererror как исправить

An unexpected unwanted event that disturbed the normal flow of a program is called an Exception. There are mainly two types of exception in Java 1. Checked Exception 2. Unchecked Exception ExceptionInInitializerError is the child class of the Error class and hence it is an unchecked exception. This exception is

Improve Article

Save Article

  • Read
  • Discuss
  • Improve Article

    Save Article

    An unexpected, unwanted event that disturbed the normal flow of a program is called an Exception.

    There are mainly two types of exception in Java:

    1. Checked Exception

    2. Unchecked Exception

    ExceptionInInitializerError is the child class of the Error class and hence it is an unchecked exception. This exception is rise automatically by JVM when JVM attempts to load a new class as, during class loading, all static variables and static initializer block are being evaluated. This exception also acts as a signal that tells us that an unexpected exception has occurred in a static initializer block or in the assignment of value to the static variable.

    There are basically two cases when ExceptionInInitializerError can occur in a Java Program:

    1. ExceptionInInitializerError While Assigning Value To The Static Variable

    In the below example we assign a static variable to 20/0 where 20/0 gives an undefined arithmetic behavior and hence there occurs an exception in the static variable assignment and ultimately we will get ExceptionInInitializerError.

    Java

    class GFG {

        static int x = 20 / 0;

        public static void main(String[] args)

        {

            System.out.println("The value of x is " + x);

        }

    }

    2. ExceptionInInitializerError While Assigning Null Value Inside A Static Block

    In the below example we have declared a static block inside which we create a string s and assign a null value to it, and then we are printing the length of string, so we will get NullPointerException because we were trying to print the length of a string that has its value as null and as we see that this exception occurs inside the static block, so we will get ExceptionInInitializerError.

    Java

    class GFG {

        static

        {

            String s = null;

            System.out.println(s.length());

        }

        public static void main(String[] args)

        {

            System.out.println("GeeksForGeeks Is Best");

        }

    }

    How to Resolve Java.lang.ExceptionInInitializerError ?

    • We can resolve the java.lang.ExceptionInInitializerError by ensuring that static initializer block of classes does not throw any Runtime Exception.
    • We can resolve also resolve this exception by ensuring that the initializing static variable of classes also doesn’t throw any Runtime Exception.

    1. Brief Introduction to ExceptionInInitializerError in Java
    2. Handle the ExceptionInInitializerError in Java
    3. Conclusion

    ExceptionInInitializer Error in Java

    In this article, we will learn about the ExceptionInInitializerError in Java.

    Brief Introduction to ExceptionInInitializerError in Java

    ExceptionInInitializerError is an unchecked exception in Java, and it’s the child of the Error class. It falls in the category of Runtime Exceptions.

    In Java, whenever the JVM (Java Virtual Machine) fails to evaluate a static initializer block or instantiate or assign a value to a static variable, an exception ExceptionInInitializerError occurs. This indicates that something has gone wrong in the static initializer.

    Whenever this exception occurs inside the static initializer, Java maintains the reference to the actual exception as the root cause by wrapping the exception inside the object of the ExceptionInInitializerError class.

    Examples of ExceptionInInitializerError in Java

    Based on the above discussion, ExceptionInInitializerError occurs in major cases. Let’s see some examples to understand it better.

    Example 1: Scenario where we are assigning values to the static variable.

    public class Test {
    
        static int x = 100/0;
        public static void main(String []args)
        {
            System.out.println("Value of x is "+x);
        }
    
    }
    

    Output:

    Exception in thread "main" java.lang.ExceptionInInitializerError
    Caused by: java.lang.ArithmeticException: / by zero
        at Test.<clinit>(Test.java:4)
    

    In the above code, we assigned a 100/0 value to a static variable x, which gives an undefined arithmetic behavior, so an exception occurs while assigning values to the static variable, which finally gives us the ExceptionInInitializerError.

    We can also observe in the output that the actual exception ArithmeticException is wrapped inside an instance of the ExceptionInInitializerError class.

    Example 2: Scenario where inside the static blocks, null values are assigned.

    public class Test {
    
        static
        {
            String str = null;
            System.out.println(str.length());
        }
    
        public static void main(String []args)
        { }
    
    }
    

    Output:

    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)
    

    In the above code, we have created a static block inside which we have a string str with the null value. So, when we try to get its length using the length() method, we get NullPointerException as we print the length of a string with null as its value.

    But, as this exception occurs inside a static block, it will be wrapped inside the ExceptionInInitializerError class, and we get ExceptionInInitializerError in the output.

    Handle the ExceptionInInitializerError in Java

    ExceptionInInitializerError in Java can be avoided by ensuring the following points:

    1. Make sure that initializing static variables in a program doesn’t throw any Runtime Exception.
    2. Make sure that the static initializer blocks in a program don’t throw any Runtime Exception.

    Conclusion

    In this article, we learned about ExceptionInInitializerError in Java, indicating that some exceptions occurred while initializing a static variable or evaluating a static block. This error works as a runtime wrapper for the underlying exception and stops the JVM until the programmer resolves the underlying exception.

    Неизвестное нежелательное событие, нарушившее нормальный ход выполнения программы, называется исключением.

    В Java есть в основном два типа исключений:

    1. Проверяемое исключение

    2. Непроверенное исключение

    ExceptionInInitializerError — это дочерний класс класса Error и, следовательно, это непроверенное исключение. Это исключение автоматически создается JVM, когда JVM пытается загрузить новый класс, поскольку во время загрузки класса оцениваются все статические переменные и блок статического инициализатора. Это исключение также действует как сигнал, который сообщает нам, что непредвиденное исключение произошло в блоке статического инициализатора или при присвоении значения статической переменной.

    В основном есть два случая, когда ExceptionInInitializerError может возникнуть в программе Java:

    1. ExceptionInInitializerError при присвоении значения статической переменной

    В приведенном ниже примере мы назначаем статической переменной 20/0, где 20/0 дает неопределенное арифметическое поведение, и, следовательно, возникает исключение в назначении статической переменной, и в конечном итоге мы получим ExceptionInInitializerError.

    Ява

    class GFG {

    static int x = 20 / 0 ;

    public static void main(String[] args)

    {

    System.out.println( "The value of x is " + x);

    }

    }

    2. ExceptionInInitializerError при присвоении нулевого значения внутри статического блока

    В приведенном ниже примере мы объявили статический блок, внутри которого мы создаем строку s и присваиваем ей нулевое значение, а затем печатаем длину строки, поэтому мы получим исключение NullPointerException, потому что мы пытались распечатать длину строка, значение которой равно нулю, и, как мы видим, это исключение возникает внутри статического блока, поэтому мы получим ExceptionInInitializerError.

    Ява

    class GFG {

    static

    {

    String s = null ;

    System.out.println(s.length());

    }

    public static void main(String[] args)

    {

    System.out.println( "GeeksForGeeks Is Best" );

    }

    }

    Как разрешить Java.lang.ExceptionInInitializerError?

    • Мы можем разрешить java.lang.ExceptionInInitializerError, убедившись, что статический блок инициализатора классов не генерирует никаких исключений времени выполнения.
    • Мы также можем разрешить это исключение, убедившись, что инициализирующая статическая переменная классов также не генерирует никаких исключений времени выполнения.

    Вниманию читателя! Не прекращайте учиться сейчас. Ознакомьтесь со всеми важными концепциями Java Foundation и коллекций с помощью курса «Основы Java и Java Collections» по доступной для студентов цене и будьте готовы к работе в отрасли. Чтобы завершить подготовку от изучения языка к DS Algo и многому другому, см. Полный курс подготовки к собеседованию .

    Like this post? Please share to your friends:
  • Exception in thread main java lang error unresolved compilation problem scanner cannot be resolved
  • Exception in thread main java lang error unresolved compilation problem invalid character constant
  • Exception in thread main java lang error ip helper library getipaddrtable function failed
  • Exception in initializer error
  • Exception in exception handler command and conquer 3 как исправить