繁体   English   中英

Java中的ExceptionInInitializerError

[英]ExceptionInInitializerError in java

我在此页面上进行了一些测试: 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”何时发生以及为什么在此代码中发生?

抛出ExceptionInInitializerError表示在评估静态初始化程序或静态变量的初始化程序期间发生了异常。

在您的代码中,您尚未初始化数组x[] ,并且在静态块中使用x[0]=1 ,因此发生了异常。

表示在静态初始化程序中发生了意外的异常。 抛出ExceptionInInitializerError表示在评估静态初始化程序或静态变量的初始化程序期间发生了异常。

该错误表示该类无法初始化。

在这种情况下,您的静态初始化程序块中将具有NullPointerException。

x[0] = 1;  // NPE, because x is null

根据Javadoc(当静态初始化程序块中发生异常)时,抛出( https://docs.oracle.com/javase/7/docs/api/java/lang/ExceptionInInitializerError.html )。

当您设置x[0] = 1您的x-Array仅是对数组的引用。 它尚未创建,因此在静态初始化程序块中会发生NullpointerExeption,这将导致ExceptionInInitializerError。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM