2

C++に関するいくつかのメモを読んでいて、次の質問に出くわしました

Q: コンストラクターは例外をスローできますか? コンストラクターが失敗したときにエラーを処理する方法は?

A:コンストラクターがエラーをスローすることはありません。

今、この答えは私を混乱させました.オンラインに行って、コンストラクターからいつでも例外をスローできることを確認するために. これがメモのタイプミスであるかどうか、そして重要なものを見逃していないかどうかを確認したかっただけです。

4

3 に答える 3

4

もちろん、それは可能です。標準のコンテナー (例: ) でさえ、コンストラクターからstd::vectorスローされます。std::bad_allocこのFAQは真実を語っています。

于 2013-05-17T15:55:36.533 に答える
4

コンストラクター全般について話している場合、メモは間違っています。Ctors は確かに普通に投げることができます。おそらくそれは、スローされない構築を保証する特定のクラスについて議論していたのでしょうか?

一方、デストラクタがスローしないようにコーディングすることを強くお勧めします。そうすることは合法ですが、スタックの巻き戻し中に例外をスローすると、すぐにプログラムが終了します (への呼び出しstd::terminate)。

于 2013-05-17T15:56:13.573 に答える