为什么出现该异常?
在new一个对象的时候,如果出现未捕获的运行时异常,JVM便抛出ExceptionInInitializerError,表示该类初始化失败。Example:
class InitTest { static { String str = null; Logger.getGlobal().info("Length: " + str.length()); } public InitTest() { // Constructor } }
如何解决?
找出发生异常的代码,修改代码阻止产生异常或者使用try…catch捕获异常。该异常可能发生的地方有三个:
- 构造方法
- 类代码块 –> {…}
- 静态类代码块 –> static {…}
总结
一个类(class)并不是永远能new成功,当发现类的构造方法没有问题,仍然构造失败,别忘了去查看类的代码块和静态代码块。