例外発生箇所に戻る方法はあるか?

標準C++の規約によると不可能です。諦めてください。

C++では例外が起こると、catchを見つけるまで「スタックの巻き戻し」が行われる事が決まっています。


結果としてcatchブロックが無い場合、例外の発生箇所を特定する事さえ非常に困難になります。

まれに、例外が起こった関数でcatchして、エラーの原因を修復、goto文などを使って戻るコードをみますが、動作は全く保証されません。

蛇足ですが、Windows系OSが送出する例外である構造化例外処理(別名:SEH)は発生箇所に戻る事が出来る例外です。Visual C++を使ってる人はこいつのせいで色々と勘違いするようなので、しっかり区別をつけておきましょう。

Leave a Reply

Be the First to Comment!

Notify of
avatar
wpDiscuz