4.第8条:なぜデストラクタで例外をスローすることは推奨されませんか?

1      トライ{db.Close();}
 2      キャッチ(...){
 3。         // 製造操作履歴、コールが失敗フラグを閉じ、
4          STD :: ABORT();
 5      }
 6。     トライ{db.Close( );}
 。7      キャッチ(...){
 8          // 製造操作履歴、異常嚥下、故障フラグを閉じるために呼び出し、その後に行われます。
9      }

4.1は、例外のデストラクタを投げ、それが災害プログラムにつながる、などといくつかの削除操作を実装することができないことはできませんオフ従うポインタにつながるよう「あいまいな行動」につながります。

4.2。あなたは(もしあれば)実行時に例外をスローしたい場合は、これらの操作は、通常のメンバ関数として設定ではなく、デストラクタに配置する必要があります

4.3デストラクタが例外をスローする場合は、そこコールのstd ::アボート()(多くの場合)には2つの解決策がある、またはプログラムおよびリターン情報を停止し、1は無視例外で、引き続き、記録例外情報。

おすすめ

転載: www.cnblogs.com/Royzzzzz/p/11901427.html