例外処理
「どのようなときに例外を使うか?」についての一つの考え方です。
例外を使用する/しない
通常の処理フローで発生する結果については、例外は使用しません。
例をいくつか挙げます。
ある条件で検索したところ、検索結果が0件だった場合、これは予期される通常の処理フローなので例外は使用しない
一覧表示された項目の1つを選んで詳細表示をしたら、データが取れなかった場合、これは予期できない処理フローなので例外を使用する
関数に渡された引数が不正(有効範囲外)であった場合、これは予期できない処理フロー(バグ)なので例外を使用する
ユーザが画面から入力したデータが不正(有効範囲外)であった場合、これは予期できる通常の処理フローなので例外は使用しない
例外処理をする/しない
ある関数を呼び出したとき、その関数処理内で例外が発生する可能性がある場合、必ず例外処理(try-catch)を書かなくてはならないのでしょうか?
例外から回復する可能性がある場合、回復処理を書くために例外を捕捉(try-catch)する。
例)通信に失敗した場合、ネットワークの一時的な障害の可能性があるため、一定回数リトライを行う
何もできないなら、例外を捕捉せず、そのまま上(呼び出し元)に伝播させる。
やってはいけないこと
例外を捕捉して、回復処理を何もしないで(ログ出力などでお茶を濁して)次の処理に移ってしまう
Last updated