class初始化异常 – java.lang.ExceptionInInitializerError

By | 2016年6月5日

为什么出现该异常?

在new一个对象的时候,如果出现未捕获的运行时异常,JVM便抛出ExceptionInInitializerError,表示该类初始化失败。Example:

class InitTest {
  static {
    String str = null;
    Logger.getGlobal().info("Length: " + str.length());
  }

  public InitTest() {
    // Constructor
  }
}

如何解决?

找出发生异常的代码,修改代码阻止产生异常或者使用try…catch捕获异常。该异常可能发生的地方有三个:

  • 构造方法
  • 类代码块 –> {…}
  • 静态类代码块 –> static {…}

总结

一个类(class)并不是永远能new成功,当发现类的构造方法没有问题,仍然构造失败,别忘了去查看类的代码块和静态代码块。