ArrayIndexOutOfBoundsException 和 IndexOutOfBoundsException 之间的区别?

Posted

技术标签:

【中文标题】ArrayIndexOutOfBoundsException 和 IndexOutOfBoundsException 之间的区别?【英文标题】:Difference between ArrayIndexOutOfBoundsException and IndexOutOfBoundsException? 【发布时间】:2016-03-19 21:11:35 【问题描述】:

在哪些用例中我们应该交替使用ArrayIndexOutOfBoundsException 和`IndexOutOfBoundsException?

【问题讨论】:

谷歌 "IndexOutOfBoundsException" 不同的是,n Array的情况下使用一个,另一个不使用。 【参考方案1】:

IndexOutOfBoundsException :抛出以指示某种索引(例如数组、字符串或向量)超出范围。

ArrayIndexOutOfBoundsException, StringIndexOutOfBoundsException 是两个类,都实现了IndexOutOfBoundsException

ArrayIndexOutOfBoundsException: 抛出一个表示数组被非法索引访问。索引为负数或大于等于数组的大小。

StringIndexOutOfBoundsException:由 String 方法抛出,表示索引为负数或大于字符串的大小。对于某些方法,例如charAt方法,当索引等于字符串的大小时也会抛出这个异常。

【讨论】:

【参考方案2】:

IndexOutOfBoundsExceptionArrayIndexOutOfBoundsException(访问数组中的无效索引时抛出)和StringIndexOutOfBoundsException(访问字符串中的无效索引时抛出)的超类。

当访问无效的列表索引时,基类IndexOutOfBoundsException 本身的实例被抛出。

一些抛出IndexOutOfBoundsException或其子类的方法的Javadoc包含基类。例如,String.charAt 被记录为在实际抛出子类 StringIndexOutOfBoundsException 时抛出 IndexOutOfBoundsException

【讨论】:

【参考方案3】:

基本上,如果您超出数组或字符串的范围,您将得到 ArrayIndexOutOfBoundsException 或 StringIndexOutOfBoundsException。 但是对于 LinkedList 或其他一些集合,您将获得更一般的 IndexOutOfBoundsException。

【讨论】:

【参考方案4】:

ArrayIndexOutOfBoundsException 指示其消息中的非法索引。

【讨论】:

IndexOutOfBoundsException 没有?

以上是关于ArrayIndexOutOfBoundsException 和 IndexOutOfBoundsException 之间的区别?的主要内容,如果未能解决你的问题,请参考以下文章