【发布时间】:2011-10-26 15:35:01
【问题描述】:
可能重复:
Will exit() or an exception prevent an end-of-scope destructor from being called?
在 C++ 中,当应用程序调用 exit(3) 时,是否应该运行堆栈上的析构函数来展开堆栈?
【问题讨论】:
-
还有,还有其他方法吗?
throw一个特殊的类型,而不是调用exit,在main中捕获它,然后从main中捕获它的return而不是从main中的exit? -
@AaronMcDaid 我不明白你的问题。替代方法是什么?通过避免调用
exit(),您会尝试完成什么?在我的一个应用程序中,我确实抛出了一个customExit对象并在 main 中捕获它并使用来自customExit对象的整数值来提供来自 main 的返回值,这样我的 RAII 析构函数就会运行以清理诸如临时文件。 -
您的评论准确地回答了我(写得不好)的问题。谢谢!基本上,我想确认其他人使用这种
throw方法来确保在正常的程序退出中一切都被破坏
标签: c++ destructor exit