例外処理について
C++は、エラーの処理として例外処理 の機能があります。
これを使って実行中の予期せぬエラーに備えます。
例外が throw でスローされると、throw以後は実行されず、読み飛ばします。
そして、スローされた例外型をキャッチできる 所を探します。
最初に見つかった catchブロックは、例外をキャッチして catchブロック内の処理を行います。
もし、型の一致する catchが見つからない場合は、現在の関数を呼び出した元の関数へ遡っていきます。
(この時、ローカル変数のデストラクタは呼び出される)
それを繰り返して、最終的に main関数の最後まできてもキャッチされない場合は、一般的にはプログラム自体が終了しますが、 この動作はあくまでデフォルトのものです。
ただ、この動作を変更する必要性はあまり無いと思います。
===================
例外処理は、使うとき、使わないときをどのように切り分けていますか?。
ここのサイトが参考になります。
これを使って実行中の予期せぬエラーに備えます。
- try
- throw
- catch
例外が throw でスローされると、throw以後は実行されず、読み飛ばします。
そして、スローされた例外型をキャッチできる 所を探します。
最初に見つかった catchブロックは、例外をキャッチして catchブロック内の処理を行います。
もし、型の一致する catchが見つからない場合は、現在の関数を呼び出した元の関数へ遡っていきます。
(この時、ローカル変数のデストラクタは呼び出される)
それを繰り返して、最終的に main関数の最後まできてもキャッチされない場合は、一般的にはプログラム自体が終了しますが、 この動作はあくまでデフォルトのものです。
ただ、この動作を変更する必要性はあまり無いと思います。
===================
例外処理は、使うとき、使わないときをどのように切り分けていますか?。
ここのサイトが参考になります。
- ある条件で検索したところ、検索結果が0件だった場合、これは予期される通常の処理フローなので例外は使用しない
- 一覧表示された項目の1つを選んで詳細表示をしたら、データが取れなかった場合、これは予期できない処理フローなので例外を使用する
- 関数に渡された引数が不正(有効範囲外)であった場合、これは予期できない処理フロー(バグ)なので例外を使用する
- ユーザが画面から入力したデータが不正(有効範囲外)であった場合、これは予期できる通常の処理フローなので例外は使用しない
コメント
コメントを投稿