例外処理と Exceptionクラス
JDK にはエラーを処理するための専用のクラス Error と Exception があます。
これらはいずれも Throwable クラスのサブクラスです。
Errorクラスはバーチャルマシン内部などで利用されるもので、
通常のアプリケーションが利用するのは Exception とそのサブクラスです。
きめ細かなエラー処理を実現する目的で、
エラーの種類や独自の情報を伝えるための専用のサブクラスをプログラムの
内部で定義することもあります。
例外を発生させる箇所では、Exceptionクラスのオブジェクトを throw文に
よって呼び出し先に渡します。また、例外を発生させる可能性のあるメソッド
は、その定義の始めの部分で throws 文で発生させる例外の種類を宣言しておく
必要があります。
protected int getIntParameter( String word ) throws Exception {
String valueString = getParameter( word );
if( valueString == null )
throw new Exception(); // 例外が発生
Java言語には例外処理のための構文が用意されています。
例外が生じる可能性がある処理に対しては try{} ブロックの中に記述し、
例外が生じた場合の処理を、それに続く catch(){} ブロックの中に記述します。
catch() の引数には、発生した例外のオブジェクトが渡されます。
catch(){} ブロックは、例外の種類に応じて複数用意することが可能です。
try {
int i = Integer.parseInt( string );
}
catch( NumberFormatException e ){
// 何らかのエラー処理
}
catch で指定される Exception のクラスのチェックは、
上から下に記述された順番に行われます。
したがって、ある Exception のクラスのサブクラスは、必ず上の位置に記述
しなくてはいけません。(これはコンパイル時にチェックされます。)
互いに継承関係がない Exceptionのサブクラスどおしの順番は任意でかまいません。
例外処理を細かく処理する必要が無い場合は、
共通のスーパークラスを指定した catchで処理してもかまいません。
極端な場合は、Exceptionクラスの単独の catch で処理することも可能です。