2

Sutter と Alexandrescu のコーディング標準では、参照によって例外をキャッチするように指示されています。

もちろん、このような包括的な推奨事項には、時折の例外があります (しゃれた意図はありません)。値による例外のキャッチが優先されるユースケースはありますか?

4

1 に答える 1

5

参照をキャッチすることの利点は、コピー可能性を必要としない、またはコピーを実行する (潜在的にスライスする) 必要がないという明らかな理由に加えて、それを変更して で処理を続行できることですthrow;

オブジェクトを変更したいが、変更されていないオブジェクトで例外処理を続行する場合throw;コピーを作成する必要があります。これを行う 1 つの方法は、値によるキャッチです。

かなりわざとらしいけど。参照によるキャッチにconst続いて明示的なコピーを使用すると、意図をより適切に表現できます。

また、新しい C++11nested_exceptionをスローすると、値によって受け取ったオブジェクトではなく、以前にスローされた例外オブジェクトが新しい例外内にネストされることに注意してください。このような状況では、受信した例外への独自の参照を保持できる可能性があります。これは、参照によって受信しない限り古くなります。

于 2013-07-18T02:49:22.033 に答える