2

重複の可能性:
いつ、どのように例外処理を使用する必要がありますか?

C# と C++ の両方で、プログラマーがメソッドに「try{}catch(){}」ブロックを記述しているのを見てきました。C# では普通のようです。しかし、C++ ではわかりにくいようです。それらを使用する正しい方法は何ですか?

4

2 に答える 2

10

実際には、try/catch を使用する必要があるのは 3 回だけです。

  1. アプリケーションのトップ レベルで、わかりやすいエラー メッセージをユーザーに表示できます (後で問題を修正できるように、役立つ情報をログに記録することもできます)。

  2. 例外から適切に回復できる場合 (または、少なくとも不要になったリソースをクリーンアップする場合)。

  3. 例外情報を使用して何かを実行してから、例外をバブルアップする場合。

これら 3 つの状況以外では、try/catch ブロックを使用する理由はありません。必要に応じて例外を処理できるように、呼び出し元に例外をバブルアップさせる必要があります。

于 2012-10-19T15:53:11.240 に答える
6

例外の意図は、ユーザーへの通知、再試行など、何か役に立つことができるようになるまで処理を延期する必要があるということです。そのため、すべての関数で例外をキャッチすることは、一般的に設計として不適切です。

Justin が言うように、ローカル クリーンアップを行うには、例外をキャッチして再スローする必要がある場合があります。これにより、C# コードが説明されます。

C++ では慣用的なアプローチは RAII であり、代わりに決定論的破壊を使用してローカル クリーンアップを実行し、実際には処理しないが再スローするだけの catch ハンドラーを回避します。

于 2012-10-19T15:54:54.810 に答える