>>428
例外に限らず、オブジェクト指向言語ではすべての型はその
スーパークラスとして扱うことができるという特徴を持つ。
これを is-a の関係という。
ArrayIndexOutOfBoundsException is a java.lang.Exception というわけ。
スーパークラスで全部一括処理しないのは、起きた例外によって処理を分けることができるから。
try {
  〜ごにょごにょ
} catch(SQLExceptio e) {
 //SQLExceptionが起きたとき(DB関連)のエラー処理
 System.out.println("DBまわりで例外発生!");
} catch(ArrayIndexOutOfBoundsException){
 //配列参照のエラー発生時の処理
 System.out.println("配列の参照で例外発生!");
} catch(Exception e){
 //上記以外の例外が発生!
 //上から順に検証されるので、上記2つ以外の例外処理はExceptionでまとめることもできる。
}
みたいな。