我正在从这个页面做一些测试:http://scjptest.com/mock-test.xhtml?execution=e7s1并且有一个问题“这个程序执行时的结果是什么?”。这是代码:
public class SuperHotel {
static int x[];
static {
x[0] = 1;
}
public static void main(String args[]) {
}
}
答案是“抛出ExceptionInInitializerError”。当“ExceptionInInitializerError”可能发生时,有人会说我这个代码中发生的原因吗?
答案 0 :(得分:5)
抛出ExceptionInInitializerError
表示在评估静态初始化程序或静态变量的初始化程序期间发生异常。
在您的代码中,您尚未初始化数组x[]
,并且您在静态块中使用x[0]=1
,因此发生了异常。
答案 1 :(得分:2)
表示静态初始化程序中发生意外异常。抛出ExceptionInInitializerError以指示在评估静态初始化程序或静态变量的初始化程序期间发生异常。
错误意味着该类无法初始化。
在这种情况下,静态初始化程序块中存在NullPointerException。
onActivityResult()
答案 2 :(得分:1)
在静态初始化程序块中发生异常时,抛出Javadoc(https://docs.oracle.com/javase/7/docs/api/java/lang/ExceptionInInitializerError.html)。
当您分配x[0] = 1
时,您的x-Array只是对数组的引用。它尚未创建,因此静态初始化程序块中会出现NullpointerExeption,从而导致ExceptionInInitializerError。