14

インターネットを検索したところ、このトピックに関する記事がたくさん見つかりました。ただし、コードの例外安全性の品質を検証するための完全なチェックリストがないことがわかりました。

そこで、C++ の例外処理に関する貴重なベスト プラクティスを皆さんから集めたいと思います。

最初に、私自身のいくつかのプラクティスをリストします。

  1. デストラクタに例外があれば、すべてキャッチします。

    struct A
    {
        ~A()
        {
            try
            {
                // Here may throw exceptions
            }
            catch (std::runtime_error& e)
            {}
            catch (...)
            {
                logging("...");
            }
        }
    };
    
  2. 例外情報に関数名、ソースファイル名、行番号を追加。__func____FILE____LINE__仲良しです。

  3. 例外指定を使用しないでください。その理由は、書籍「C++ Coding Standards」に記載されています。

あなたのものは何ですか?

4

1 に答える 1

18

これは回答よりもコメントの方が適していると思いますが、リンクしているリソースはすべての質問に回答しているので、回答として投稿してもかまいません。可視性および/または関連性。

また、元の内容よりもすべてをうまくまとめることができなかったため、簡単な要約を作成することすらしません。これは、歪曲したり、偏った概要を示したりするリスクがあるためです。

JonKalbによる例外安全コーディングに関するこの2部構成の講演をご覧ください。それでおしまい。

于 2013-01-29T18:24:03.217 に答える