2012-09-10 72 views
5

據我所知,terminate()是在異常處理出現問題時調用的(通常它只是未被捕獲)。 我得到的只是一個錯誤行terminate called recursively終止遞歸調用

Google上搜尋了一段時間後,我發現了很多的

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

例子,但它不是我的情況。因爲我沒有關於異常類型的提示,所以我想知道這是什麼terminate called recursively本身。

對不起,我不能提供代碼,所以任何猜測都會有幫助。 我在Ubuntu 11.04下用g ++ 4.5.2編譯。

非常感謝, Alex。

+2

沒有代碼,我們什麼也沒說。可能是你有終止處理程序,寫道「遞歸終止」。 – ForEveR

+0

謝謝@ForEveR。不,我沒有使用set_terminate。 – Shamdor

+0

嘗試調試,使用gdb和core。 – ForEveR

回答

14

可能是因爲某些代碼拋出了一個你沒有捕獲到的異常,這意味着terminate將被調用。終止程序意味着可能會調用對象析構函數,並且如果其中一箇中存在異常,則terminate將被稱爲「遞歸」。

+0

仍然沒有發現問題,但聽起來很合理。謝謝! – Shamdor

+1

這不是答案。當一個析構函數在堆棧展開另一個異常的過程中拋出異常時,該過程將立即終止。試試看看。 – jcoffland