2013-04-29 85 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