Javaの例外処理 try~catch
try ~ catch の効果
・例外を、ユーザが用意した処理ルーチンで処理できる
・例外のチェックと処理をコードのあちこちに埋め込まないで済む
・既定の例外処理メカニズムのスタックメッセージは表示されない
tryブロックの実行
例外が発生した時点で、tryブロック内の実行は中止され、catchの検索を開始する
catchブロックの検索
1.tryブロックの直後にある1つ目のcatchから開始する
2.該当catchブロックが無ければ、ほかのtryブロックのcatchブロックを検索する
3.それでも該当catchブロックが無ければ、呼び出しメソッドが検索される
4.main()メソッドまでさかのぼっても該当catchブロックが無ければ、既定の例外メッセージが表示され、プログラムは停止する
catchブロックの順序
サブクラスより先にスーパークラスを捕獲するような順序でcatchブロックが並んでいると、コンパイルエラーになる
finallyブロックの実行
・tryブロック、catchブロックの実行が終わった時点で(catchが例外を捕獲したかしないかにかかわらず)、必ずfinallyブロックが実行される
・tryブロック内にreturnステートメントがあっても、呼び出し元に戻る前に必ずfinallyブロックが実行される
・catchブロック内にthrowステートメントがあっても、呼び出し元に戻る前に必ずfinallyブロックが実行される
throwステートメントの効果
同じcatchブロックの実行は中止され、例外処理は継続し、次のcatchの検索が開始される
例外2種
・チェック例外 :キャッチしなければコンパイルエラーになる例外
・非チェック例外:キャッチしなくてもコンパイルエラーにならない例外