Как устранить ошибку Java.lang.ExceptionInInitializerError в Java?

Опубликовано: 30 Ноября, 2021

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

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

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

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

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

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

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

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

Ява

// 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 при присвоении нулевого значения внутри статического блока

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

Ява

// 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 assignning 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" );
}
}

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

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

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