インターネットを検索したところ、このトピックに関する記事がたくさん見つかりました。ただし、コードの例外安全性の品質を検証するための完全なチェックリストがないことがわかりました。
そこで、C++ の例外処理に関する貴重なベスト プラクティスを皆さんから集めたいと思います。
最初に、私自身のいくつかのプラクティスをリストします。
デストラクタに例外があれば、すべてキャッチします。
struct A { ~A() { try { // Here may throw exceptions } catch (std::runtime_error& e) {} catch (...) { logging("..."); } } };
例外情報に関数名、ソースファイル名、行番号を追加。
__func__
、__FILE__
と__LINE__
仲良しです。例外指定を使用しないでください。その理由は、書籍「C++ Coding Standards」に記載されています。
あなたのものは何ですか?