2013-04-29 64 views
-1

我有一个静态的初始化块,并从中抛出一个ExceptionInInitializerError异常。
有什么办法可以通过这个异常,并从这个类访问其他字段和方法? 谢谢。通过ExceptionInInitializerError传递

+0

什么是错在该块? – NINCOMPOOP 2013-04-29 07:04:48

+0

我知道什么是错的,可以错的,但我只想知道是否有一种方法(希望不是)从这个错误中恢复。 – Roxana 2013-04-29 07:12:31

回答

0

通过调用来启动包含静态块的类到try块中并捕获ExceptionInInitializerError。像下面这样:

try{ 
    ClassWithStaticBlock cb = new ClassWithStaticBlock(); 
} 
    catch(ExceptionInInitializerError ex){  
} 
+0

一个不会捕获ExceptionInInitializerError。 – Natix 2014-04-23 14:36:42

2

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