【发布时间】:2010-11-06 17:24:33
【问题描述】:
C++ 标准提供了std::set_terminate 函数,它允许您指定std::terminate 应该实际调用的函数。 std::terminate 应该只在可怕的情况下被调用,并且当它被调用时,标准所描述的情况确实是可怕的(例如,未捕获的异常)。当std::terminate 确实被调用时,这种情况似乎类似于内存不足——您可以明智地做的事情并不多。
我读到它可以用来确保资源被释放——但对于大多数资源,这应该由操作系统在进程退出时自动处理(例如文件句柄)。从理论上讲,我可以看到一个案例,如果说,由于崩溃而退出时,您需要向服务器发送特定消息。但大多数时候操作系统处理就足够了。
Right Thing(TM) 何时使用终止处理程序?
【问题讨论】:
-
std::terminate 应该只在可怕的情况下被调用,而且当它被调用时,标准描述的情况确实是可怕的(例如,一个未捕获的异常)。
-
不,他的意思是未捕获的异常。
-
是的,找到了。包罗万象的短语:(异常处理机制找不到抛出异常的处理程序。)
标签: c++ exception-handling resources standards terminate