簡體   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