チェック例外と実行時例外の使い分けについて

一般に、チェック例外、実行時例外の使い方の切り分けは、
回復可能な状態にはチェック例外、回復不能なプログラミングエラーには実行時例外といわれる。
例として実行時例外の代表的なものとして、配列の要素外アクセスを表すArrayIndexOutOfBoundsExceptionを取り上げてみる。
冒頭の指針に基づけば、ArrayIndexOutOfBoundsExceptionは回復不能な状況で投げられているということである。
つまり、配列の要素外アクセスはそんな状況が発生するプログラムコード自体が間違っているのであって、
それを検知したあと、プログラムの動作を継続させるべきではなく、そもそも発生しないようにプログラムコードを修正すべきということである。
つまり、荒っぽくシンプルに解釈すると、アプリケーションの動作中に、発生したら回復不能でプログラムを終了すべきエラーは実行時例外とすべき。
DB接続エラーとか、クラス生成エラーとか、設定ファイル読み込みエラーとかそんな感じのやつ。
プログラムを即終了させるのが適切であれば、catchせずにJVMに直行させればよいだろうし、
適切な終了処理をしてから終了させたいなら、非チェック例外とはいえ、必要に応じてcatchして、終了処理をすればよい。
※非チェック例外は、catchを強制されていないだけであって、処理上必要なのであれば、catchして適切な処理をすることは何の問題もない。
一方、チェック例外とすべきなのは、プログラムの動作上起こりうるエラーで、回復処理さえすれば、動作を継続して問題ない場合に投げる。
セッション有効期限切れエラーとか、ユーザー切断エラーとか、そんな類のやつ。


■例外とreturn文によるエラー制御について
一般に例外は「予期されないエラー状態」に投げるべきで、そうでない状況の通知には旧式のreturnによる状態コード通知がよい言われている。
が、なにが予期された状況で、どれがそうでないかというのは、深遠なるテーマではっきりとした基準があるわけではない。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です