例外によるスタックの巻き戻し処理中に再度例外を投げるとabort()し、元の例外メッセージが失われてしまい困っています。RAIIが強力なのでよく使うのですが、デストラクタ内で検出したバグを通知する時に例外を使えないので、手間がかかるのです。
デストラクタ内での対策で済めば多少面倒でも良いのですが、あちこちに対処を書かないといけないので困ってます。あちこちに開放処理を書かないで済むことがRAIIの最大のメリットなので。
例外によるスタック巻き戻し中は元の例外を表示し、そうでない時はデストラクタ内で発生した例外を表示できれば済むのですが、何か良いアイデアは無いでしょうか?
Effctive C++を見るとこのような時はabort()するか例外を飲み込むの2つしか対策がないと書いてあります。abort()すると元の例外が失われます。飲み込むと通常時に例外が発生したことを確認するためログを見る必要があります。
ということは、これはかなり無茶な発想かもしれません。
ですので、「そんな方法はないので素直にログを確認するしかない」でも良いです。他に解がないことが確認できれば前に進めますので。
そして、実はコロンブスの卵的な解決策をちょっとだけ期待してます。
よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/10/28 17:49 編集