2012-09-10 16 views
5

私が知る限り、例外処理には何らかの問題があるときに呼び出されます(通常はちょうどキャッチされません)。terminate() 私が得たものは、ただ1つのエラーラインterminate called recursivelyです。は再帰的に呼び出されます。

いくつかの時間をグーグル後、私は

terminate called after throwing an instance of ... terminate called recursively 

の例をたくさん見つけしかし、それは私の場合ではありません。例外タイプについてのこのヒントはありませんが、私はそれが何を意味するのかと疑問に思っています。terminate called recursively

申し訳ありませんが、私はコードを提供することはできませんので、任意の推測が役立ちます。 私はg ++ 4.5.2でUbuntu 11.04でコンパイルしています。

ありがとう、 アレックス。

+2

コードなしでは何も言えませんでした。あなたは "再帰的に呼び出されて終了"と書かれたハンドラを終了させることができます。 – ForEveR

+0

ありがとう@ForEveR。いいえ、私はset_terminateを使用していません。 – Shamdor

+0

デバッグしようとすると、gdbとcoreを使用してください。 – ForEveR

答えて

14

あなたがキャッチしない例外をスローするコードがあるかもしれません。つまり、terminateが呼び出されます。プログラムを終了すると、オブジェクトデストラクタが呼び出される可能性があり、そのうちの1つに例外がある場合は、terminateは「再帰的に」呼び出されます。

+0

まだ問題は見つかりませんでしたが、妥当と思われます。ありがとう! – Shamdor

+1

これは答えではありません。デストラクタが他の例外のスタックアンロール中に例外をスローすると、プロセスは直ちに終了します。それを試してみてください。 – jcoffland

関連する問題