-1

我有一个静态初始化块,并从中引发ExceptionInInitializerError异常。
有没有办法通过这个异常并访问这个类的其他字段和方法?谢谢你。

4

2 回答 2

2

ExceptionInInitializerError背后的主要原因是,当JVM遇到无法处理的意外情况时,JVM会抛出上述错误。ExceptionInInitializerError可以被捕获,虽然你不应该捕获Error,但实际上不可能从中恢复,因为发生异常的类无法进一步使用(例如实例化该类),产生一个NoClassDefFoundError.你可以参考JLS - 详细的初始化程序

于 2013-04-29T07:07:20.270 回答
0

将启动包含静态块的类的调用放入 try 块和 catchExceptionInInitializerError中。如下所示:

try{
    ClassWithStaticBlock cb = new ClassWithStaticBlock();
}
    catch(ExceptionInInitializerError ex){      
}
于 2013-04-29T07:19:15.677 回答