私は「例外なし」キャンプの一員でしたが、宗教的にはそうではありません. 例外を使用することの支持者によって頻繁に展開される議論について質問があります。
したがって、C++ の例外に関する私の最大の (唯一の) 不満は、コードの予測不可能性です。コード (VIM で IDE を使用せずに) を見て、すべての場合にそれが何をするかを正確に確認できるようにしたいと考えています。例外を除いて、throw と catch は多くの論理層から離れている可能性があるため、ロジック フローは明確ではありません。
プロ例外応答の典型的な反論は次のとおりです。
ええ、でもそれは代替案ではありません。
仮想ハンドル MyXYZError() を持つ MyErrorProxy というクラスがあり、MyClass が XYZ エラーを受け取る可能性があることがわかっていて、それを多くの論理層から離れて処理したい場合は、MyErrorProxy へのポインターを渡します (これは mixin である可能性があります)。 、インターフェイス、または単に集中型のエラー処理クラス)? ポインタを渡したくないですか?よし、スレッドセーフなシングルトンにしよう。これにはさらに配管が必要ですが、明示的であり、ロジック フローを追跡するのは非常に簡単です。
それが私が長い間コーディングしてきた方法です。
ここで私の質問は次のとおりです。これを行うことの本当の欠点は何ですか? 私がいなくなってからずっとこのコードを見て、あなたがそれを保守しているとしたら、あなたは怒るでしょうか? このメカニズムの代わりに、try(s) と catch(es) を本当に好むと思いますか?またその理由は?