C++相談室 part69
at TECH
828:==775==826
09/06/07 20:20:29
とりあえず例外の再送出は問題ないと分かれば当面は解決です。ありがとうございます。
>>827
>例外によるスタックの巻戻し中にデストラクタがさらに例外を投げた
は、
私(>>775)の言う
>アクティブな例外が2つ以上同時に発生すること
ってヤツですよね。
この場合は未定義だとEffective C++で紹介されています。
しかし
デストラクタからの例外送出::実装技術
URLリンク(cppemb.blog17.fc2.com)
ここによると
>デストラクタから例外を送出するクラスAのオブジェクトを自動記憶域で宣言し、
>その生存期間内で他の例外が発生した場合、A::~A()が呼び出されて、
>その中でまた例外が送出されます。これは二重例外と呼ばれ、
>問答無用でstd::teminateが呼び出されます。
>次に、デストラクタから例外を送出するかもしれないオブジェクトを
>静的記憶域期間で宣言した場合を考えてみてください。
>静的記憶域のオブジェクトを監視ブロック(try〜catchの制御文)で囲む構文を
>記述することはできません。すなわち、こちらはデストラクタから例外が発生した
>時点で(std::terminateの呼び出しではなく)未定義の動作になります。
と書いてありますが、果たして何がどうなんでしょうね。
次ページ続きを表示1を表示最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
5009日前に更新/243 KB
担当:undef