2011-12-21 10 views
5

現在、外部ソース(たとえばデータなど)に起因する回復不能な障害のみをスローし、実行全体を1回の試行でキャッチします。最近のC++ではどのように例外を使用する必要がありますか?

現代のC++では/ Why/Howを使用する必要がありますか?

C++ 11では、上記の質問に対する答えが変わりますか?

+4

例外は、例外条件のために使用すべきである、あなたが効果的に扱うことができないので、コールスタックを渡す必要がある状況それらが発生したレベルでそれらを実行します。 –

+7

"関数を呼び出すたびにエラーコードをチェックするのではなく、構文の嫌いと例外の複雑さを追加しましたか?例外を嫌う理由がありますが、私はこれがその一つだとは思わないのです。 –

+0

正しく使用すると例外が大きくなります。私たちは "設定の問題"、すなわち悪い設定のプロセスを開始するようなものにそれらを使用すると、メインのtry/catchが不正な設定行をキャッチする原因になります。私たちはまた、「例外的なエラー」のためにそれらを広範囲に使用します。つまり、既知のデータストリームでフォーマットが不良であることが判明した場合、高レベルのロギング「悪いメッセージ」でキャッチされる例外があります。 –

答えて

2

質問の最初の部分(ベストプラクティス)に関しては、Herb Sutterの「Exceptional C++:47 Engineering Puzzles、Programming Problems and Solutions」の「Exception-Safety Issues and Techniques」を参照してください。 C++ 11の部分に対処

- 以下の参考文献は役に立つかもしれません:

新しい例外固有の機能が追加されました。でも

http://www2.research.att.com/~bs/C++0xFAQ.html#rethrow

http://www2.research.att.com/~bs/C++0xFAQ.html#noexcept

一見無関係に見えます実際には、アプリケーションが動作する限り、機能は非常に関連しています。 "unique_ptrの使用には、動的に割り振るための例外安全性の提供Dメモリ[...]」 http://www2.research.att.com/~bs/C++0xFAQ.html#std-unique_ptr

例外仕様が廃止されました: http://herbsutter.com/2010/03/13/trip-report-march-2010-iso-c-standards-meeting/

関連する問題