ArrayIndexOutOfBoundsException 异常

所述 ArrayIndexOutOfBoundsException 当正被访问的阵列的不存在的索引被抛出。

数组是从零开始索引的,因此第一个元素的索引是 0,最后一个元素的索引是数组容量减去 1(即 array.length - 1)。

因此,索引 i 对数组元素的任何请求必须满足条件 0 <= i < array.length,否则将抛出 ArrayIndexOutOfBoundsException

以下代码是抛出 ArrayIndexOutOfBoundsException 的简单示例。

String[] people = new String[] { "Carol", "Andy" };

// An array will be created:
// people[0]: "Carol"
// people[1]: "Andy"

// Notice: no item on index 2. Trying to access it triggers the exception:
System.out.println(people[2]);  // throws an ArrayIndexOutOfBoundsException.

输出:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2
    at your.package.path.method(YourClass.java:15)

请注意,正在访问的非法索引也包含在异常中(示例中为 2); 此信息可用于查找异常的原因。

要避免这种情况,只需检查索引是否在数组的限制范围内:

int index = 2;
if (index >= 0 && index < people.length) {
    System.out.println(people[index]);
}