(例外)

何か良く分からないのですが、Javaは例外処理が結構必要なのです。前の項で軽く説明したのですが、ここではもうちょっと詳しく説明してきます。

ということでまずは簡単な例外プログラムを・・・
class b6 {
 public static void main(String[] args) {
  String aaa ;
  aaa = args[0] ;
  System.out.println("aaa = " + aaa ) ;
 }
}
# java b6 aaa
aaa = aaa
# java b6
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
at b6.main(b6.java:6)
引数を入れて実行した場合、正常にプログラムは実行できますが、引数がない場合、赤文字に示すエラーが出力されます。このエラーの意味は「不正な添字を使って配列がアクセスされたことを示すためにスローされます。つまり、添字が負または、配列のサイズ以上の場合です 」ということらしいです。この意味の調べ方はSunで公開している「API と言語仕様に関するドキュメント」で確認できます。

それで、このプログラムを例外が発生した場合の処理を加えることにします。そうすると・・・
class b6 {
 public static void main(String[] args) {
  try{
   String aaa ;
   aaa = args[0] ;
   System.out.println("aaa = " + aaa ) ;
  }
  catch(Exception e){
   System.out.println("hikisuu irero !!");
  }
 }
}
# java b6 aaa
aaa = aaa

# java b6
hikisuu irero !!
これである程度分かったでしょう。上で紹介したJavaのAPIのドキュメントで例外の一覧でArrayIndexOutOfBoundsExceptionを見てみてください。階層的に分かれてると思いますが、エラーというのは詳細に分類できるんです。つまり、上のサンプルを変えてみますと・・・・
class b6 {
 public static void main(String[] args) {
  try{
   String aaa ;
   aaa = args[0] ;
   System.out.println("aaa = " + aaa ) ;
  }
  catch(ArrayIndexOutOfBoundsException e){
   System.out.println("hikisuu irero !!");
  }
 }
}
# java b6 aaa
aaa = aaa

# java b6
hikisuu irero !!
このようにエラー処理はこまめに設定できるのです。エラーのケースによってメッセージを変えたりするんですね。