gpt4 book ai didi

java - 为什么这里是 ExceptionInInitializerError?

转载 作者:行者123 更新时间:2023-11-29 07:39:16 27 4
gpt4 key购买 nike

请注意,我知道关于

的规则

ExceptionInInitializerErrors

它说:任何静态 block 中抛出的异常被包装到ExceptionInInitializerError 然后抛出 ExceptionInInitializerError但我的问题是:为什么

java.lang.ArrayIndexOutOfBoundsException

它被扔在这里 ?**

class AX {
static int[] x = new int[0];
static {
x[0] = 10;
}

public static void main(String[] args){
AX ax = new AX();
}
}

最佳答案

这将创建一个容量为 0 的数组:

static int[] x = new int[0];

这将值分配给 x 的第一个元素:

static {
x[0] = 10;
}

不幸的是,如前所述,x 的容量为 0,它根本不能有任何元素。这就是您得到 ExceptionInInitializerError 的原因。

如果您仔细查看堆栈跟踪,它散发出更多的光芒,因为应该有这样一行:

Caused by: java.lang.ArrayIndexOutOfBoundsException: 0

数字 0 是超出范围的数组索引:如果数组不能包含任何元素,则索引 0 超出范围。

关于java - 为什么这里是 ExceptionInInitializerError?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32105408/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com