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]);
}