doA()がdoB()を呼び出してdoC()を呼び出すことがわかっているC#プログラムで、doA()、doB()、およびdoC()の3つの関数があるとします。C#での例外伝播
doC()はデータベースとやりとりする必要があるため、ユーザーの注意を引く必要がある解決できない例外が生成される可能性があることがわかりました。現時点では、doC()でtry/catchブローでエラーをスローするコードがあり、別のtry/catchでdoB()でdoC()が呼び出され、同様にdoA()でdoB try/catchブロック内の()を使用します。これにより私はスローを使うことができます。例外をユーザーに表示するために何かを合理的に行うことができるdoA()まで例外をキックする。
これは少し残酷に思えます。 doB()またはdoC()の例外を処理する予定がないので、try/catchブロックを取り除くことができるのであれば、私は疑問に思います。
最後にブロックが含まれていないと仮定すると、このような状況を処理するためのベストプラクティスは何ですか?
あなたの声明の真実性/偽りにはまっていません。「実際に例外をキャッチするにはかなり高価です」ということは、実際に重要であると私に確信させることです。 – jason
あなたのアプリケーションのパフォーマンスが重要であると私には言いません。 – MStodd
あなたは完全にその点を見逃しているか、それともコミュニケーションの効果的な仕事をしていませんでした。後者はそういう意味で私の謝罪を受け入れてください。私は精緻化します。私は真剣に例外をキャッチするパフォーマンス特性が重要であることを真剣に疑っています。ほとんどの場合、現実的なアプリケーションではボトルネックになることはまずありません。覚えておいてください。例外は例外的な状況です。さらに、例外は通常、システムの状態が悪いことを示し、その時点でパフォーマンスはほとんど問題ではありません。 – jason