Java异常处理之 java.lang.ArrayIndexOutOfBoundsException

作者 | 2020年4月11日

问题:是什么原因导致java.lang.ArrayIndexOutOfBoundsException异常的出现,以及我如何避免它?

来源:StackOverflow

问题描述

ArrayIndexOutOfBoundsException异常是什么意思?我如何去避免它?

下面这段代码会触发该异常:

String[] names = { "tom", "bob", "harry" };
for (int i = 0; i <= names.length; i++) {
    System.out.println(names[i]);
}

高赞解答

你应该去看文档,文档上给出了非常清楚的定义:

ArrayIndexOutOfBoundsException异常抛出时,意味着数组的下标访问越界。越界指的是给定的下标大于或者小于数组的大小。

因此,例如:

int[] array = new int[5];
int boom = array[10]; // 抛出ArrayIndexOutOfBoundsException异常

我们做不到完全阻止该异常的出现,唯一的办法是在使用数组下标时要小心。

一个常见的问题是,人们常以为下标的区间是[1, 数组长度],例如:

int[] array = new int[5];
// ... 输出数组 ...
for (int index = 1; index <= array.length; index++)
{
    System.out.println(array[index]);
}

上面的代码将不能访问到第一个元素(下标0),而且访问到array[5]时会抛出ArrayIndexOutOfBoundsException异常,在这里合法的下标范围应该是[0, 4],正确的for语句应该这样写:

for (int index = 0; index < array.length; index++)

发表评论

电子邮件地址不会被公开。 必填项已用*标注