例外
異常事態が起きたとき
- コンパイルエラー→記述し直す
- 実行時の異常
- エラー→Error
- 例外→Exception
※Error,Exceptionクラスがある
異常時のフロー
- プログラム実行
- 異常発生
- 例外のインスタンスを作成し、投げる(throw)
- 中断
プログラムに例外処理が書かれていたら
- プログラム(catch記述アリ)実行
- 異常発生
- 例外のインスタンスを作成し、投げる(throw)
- プログラムが受け止める(catch)、例外処理実行
- 終了
例外処理(try catch)
1 2 3 4 5 |
try { 例外が起こりそうな処理 } catch(Exception e) { 例外を受けての処理 } |
コールスタック
メソッド呼び出しの積み重ね。
printStackTrace
e.printStackTrace();
コールスタックを呼び出して、どのメソッドの中から例外が投げられたのか表示する。
チェックされる例外
チェックされない例外
いつどこで起こってもおかしくない例外。
対処(catch)の必要がない。やってたらcatchまみれになる。
- RuntimeException
- Error
チェックされる例外
RuntimeException以外のExceptionクラス。
必ず下記のどちらかを行わなければならない。
- メソッド内で例外をキャッチする
- メソッドで例外を投げることを宣言する
finally
1 2 3 4 5 6 7 |
try { 例外が起こりそうな処理 } catch(Exception e) { 例外を受けての処理 } finally { 例外があってもなくても実行する処理 } |
必ず行うべき処理(後始末)を書く。
注意点
finallyブロック内でreturnを使ってはならない
コメント
No Trackbacks.