2012-09-10 41 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