私は例外をスローするかもしれないコンストラクタを持っています。これが発生すると、デコンストラクタが呼び出されることは私の理解です。問題は、オブジェクトが実際に正常に構築されたかどうかをチェックする手がかりがないことです。C++失敗したオブジェクトの構築で実行を中断する方法は?
私は
if (objectName) {
//keep working
} else {
//alert that something went wrong
}
をやってみましたしかし、私はあなたがJavaでできるようにポインタが常に存在しますが、そうでない何かを指している可能性があるとして、あなたがC++に「ヌル」オブジェクトを持つことができないということを学びました欲しいです。
私はまた、オブジェクトのインスタンス化についてもう一度キャッチしようとしましたが、実行は通常どおり続行されます。オブジェクトが正常に構築され、使用できる状態になっているかどうかを確認するベストプラクティスは何ですか?
例外がスローされない場合、オブジェクトは完全に構築されます。 –
コンストラクタがスローすると、例外を常にキャッチできます。あなたが何をしているのかを示す実際のコードを投稿してください。 –
ベストプラクティスは、絶対にしなければ投げてはいけません。また、これを読んでください:http://www.stroustrup.com/bs_faq2.html#ctor-exceptions –