質問: new ArrayList<>(); list.get(0); //IndexOutOfBoundsException発生 } } ``` それぞれ上記のコードのコメント部分のようなエラーが発生するのですが、それぞれの違いが良く分かりません。 『配列のないx番目にアクセスした時に現れる』ような解釈だと両方とも同じに思えてしまいます。 参考書の解説の部分には ArrayIndexOutOfBoundsExceptionは 配列の要素外アクセスを表す例外クラスです。 IndexOutOfBoundsExceptionは 配列、文字列、コレクションの範囲外であることを示す例外クラスです。 と記載してあります。 単純にコレクションフレームの方だからIndexOutOfBoundsExceptionという解釈でよいのでしょうか? すいませんがどなたかご回答よろしくお願いいたします。
回答: > > 『配列のないx番目にアクセスした時に現れる』ような解釈だと両方とも同じに思えてしまいます。 > > > はい、ほとんど同じです。 違うのは、Index~は一般的な「インデックスが範囲外である」状態を示す例外で、 ArrayIndex~はその中で特に「配列におけるインデックスが範囲外である」状態を示す例外ということです。 実はArrayIndex~はIndex~の子クラスであり、どちらもIndex~としてキャッチできます。 Index~の子クラスではもう一つ、StringIndex~というものも存在します。