例外とは
例外とは、コンパイルはする事は出来るが、プログラムを実行して初めてわかるエラーを認識する為の処理の事。
例外とは、プログラムを実行した時に起きるエラーの事を言う。
例外が発生した時は、プログラムは最後まで実行される事なく、例外が発生した箇所で、途中で終了してしまう。
この時、例外処理を行う事により、プログラムを終了させる事無く、例外の内容をより詳しく返す事ができる処理をプログラムに組み込む事ができる。更に、あらかじめ特定の例外が発生した場合、それに合わせた処理内容を記述する事も出来る為、間違いを見つけやすくなったり、修正するコードをプログラムに実装する事もできる。
又、例外が発生するしないにかかわらず必ず処理されるコードを入れる事ができる。
発生する例外がcatchブロックに無い場合は、処理中のメゾットに戻って例外が探される事から、finallyブロックには、必ず行っておきたいコードを記述する。
例外処理
トライtry{}キャッチcatch(){}ファイナリーfinally{}文
try{
例外を調査するコード
}
catch(発生する例外の種類名 e){
例外が発生した時に処理するコード
}
finally{
必ず行うコード
}
※上記コードcatc()内のeは、識別子で任意で設定できる。
◎発生する例外の種類名に関して
catchブロック内で記述する、発生する例外の種類名は、Throwableクラス(例外クラス)のサブクラスのオブジェクトを戻り値である(識別子e)に代入して受け取っている。識別子eには、発生する例外のクラス名が代入される。
Throwableクラスのサブクラスには、Exceptionクラスがあり、Exceptionクラスのサブクラスに、ArrayIndexOutOfBoundsExceptionクラスがある。
発生する例外の種類名を、Exceptionと指定した場合、識別子eにはExceptionではなく、例外名の詳細が代入される。
◎複数のcatchブロック
catchiブロックは、複数設定する事ができる。これにより、例外クラス毎に違うプログラム処理を記述できる。
◎例外クラスの作成
Exceptionクラスを拡張する事により、独自の例外classを作成する事ができる。
1.
例外のクラスを作成
class CarException extends Exception
{
}
CarExceptionはclass名になるので独自に設定できる。
例外クラスは、クラス名を出力するだけなので内容を持たせなくても良い。
2.
main以外のclassのメゾットに例外処理を組み込む。
【構文】
戻り値の型 メゾット名(引数) throws 例外のクラス名{
if(引数の条件){
例外のclass名 識別子e = new 例外のクラス名;
throw e; //※eは修飾子
}else{
}
}
throw eは、例外の戻り値になる。
通常の戻り値は、return 修飾子。
3.
mein classでtry{}catch(CarException){}でエラーが発生した場合受け取る。
main classで2で送出された、例外の戻り値を受け取る為にcatchを使う。