如何在 Java 中解决 Java.lang.ExceptionInInitializerError?

2025年3月17日 | 阅读 3 分钟

在 Java 中,异常被定义为干扰程序正常执行流程的不必要事件。Java 中的异常主要分为两大类:受检异常非受检异常

Java 中的 Error 类是 ExceptionInInitializerError 的父类,它被认为是非受检异常。每当 Java 虚拟机 (JVM) 尝试加载一个新类时,JVM 都会评估所有静态变量和静态初始化块。JVM 会自动抛出 ExceptionInInitializerError

ExceptionInInitializerError 也可以表示为一条消息,告知 Java 程序在静态块中或在静态变量的值分配过程中何时发生了意外异常。

ExceptionInInitializerError 何时发生?

在 Java 中,ExceptionInInitializerError 可能发生在两种主要情况或场景。

1. 当为静态变量赋值时

让我们通过一个 Java 示例程序,详细了解 ExceptionInInitializerError 在为静态变量赋值时是如何发生的。

文件名: ExceptionInInitializerError1.java

输出

How To Resolve Java.lang.ExceptionInInitializerError in Java

解释

在上述 Java 示例程序中,在 main 方法中声明了一个静态变量,并为其赋值 1/0。赋给它的值将在此程序中引发除以零的异常。这最终将在程序中引发 ExceptionInInitializerError

2. 当在静态块中赋值 null 值时

文件名: ExceptionInInitializerError2.java

输出

How To Resolve Java.lang.ExceptionInInitializerError in Java

解释

在上述 Java 示例程序中,创建并声明了一个静态块。在静态块中声明了一个字符串变量并为其赋 null 值。在后续指令中,将打印 null 值字符串的长度。这将引发 NullPointerException,因为字符串变量中存储的值为 null,并且该异常发生在静态块中,它将抛出 ExceptionInInitializeError

解决 Java.lang.ExceptionInInitializerError 的方法

在 Java 中,可以通过确保程序中的静态块不会引起任何运行时异常来解决 Java.lang.ExceptionInInitializerError

解决 Java 中 Java.lang.ExceptionInInitializerError 的另一种方法是确保类的静态变量初始化不会引起任何运行时异常。