public class HelloWorld {
static {
try {
int i=10/0;
} catch(ExceptionInInitializerError | ArithmeticException e) {
e.printStackTrace();
}
}
public static void main(String []args) {
System.out.println("Hello World");
}
}
輸出:試穿multicatch用的ExceptionInInitializerError和ArithmeticException混亂
java.lang.ArithmeticException:/by zero
at HelloWorld.<clinit>(HelloWorld.java:7)
沒有實際的目的,這個代碼。但只是想知道爲什麼它拋出ArithmeticException
超過ExceptionInInitializerError
。 只是嘗試多捕獲的聲明,並遇到此問題。
下面的代碼會拋出ExceptionInInitializerError
。因此,邏輯上,如果我使用try-multicatch,它應該捕獲ExceptionInInitializerError
,但在這裏不是這種情況。有人可以幫我從這裏出去嗎。
public class HelloWorld {
static int i = 10/0;
public static void main(String []args){
System.out.println("Hello World");
}
}
輸出:
Exception in thread "main" java.lang.ExceptionInInitializerError
Caused by: java.lang.ArithmeticException:/by zero
at HelloWorld.<clinit>(HelloWorld.java:4)
作爲一個猜測,真正的異常('ArithmeticException')首先被拋出。當你沒有捕獲它時,在靜態初始化完成時它會被封裝在'ExceptionInInitializerError'中。但是,如果你捕獲它,你立即打印堆棧跟蹤_仍然在靜態初始化code_中。你有沒有進一步看看你是否得到了'ExceptionInInitializerError'? –