例外の伝播 〜thows宣言〜
☆ 例外の伝播
↑
・sub( )メソッド内では、subsub( )メソッドを呼ぶ
↑
・subsub( )メソッド内では何らかの例外が発生する可能性がある
もし例外が発生する可能性のある箇所にtry-catch文の記述がなかった場合、
呼び出し元(main)まで処理を遡ってお手上げされる…..例外の伝播
:
これを利用して
逆に呼び出し側が一括で例外処理を行うこともできる
(毎回例外発生する可能性がある場所にtry-catch文を記述するのは面倒)
これを行えば、例外が発生する可能性のあるクラスは
わざわざtry-catch文で囲まなくても、thowsとだけ記述しておけばOK
〈構文〉
アクセス修飾子 戻り値 メソッド名(引数リスト) thows 例外が発生する可能性のあるクラス1、例外クラス2{
メソッド処理内容;
}
ex. public void subsub( ) thows IOException{
//IOExceptionが発生する可能性があるが、try-catch文はなくてもOK
FileWriter fw=new FileWriter( );
:
スロー宣言とは、
そのメソッドが「私はメソッド内で例外が発生しても処理はしませんが、私の呼び出し元が処理します」と表明する宣言
⇩
よって、スロー宣言が含まれるメソッドを呼び出す側は
「このメソッドを呼び出すと、呼び出し先で発生した例外が処理されずに自分に伝播してくる可能性がある」ことを覚悟しなければならない
:
呼び出し側はスロー宣言の書いてあるメソッドを呼び出すときに
"try-catch文で囲む義務が生まれる"