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'? –