terminate()函数
2025年09月26日
1.terminate()函数
在下述情况下,程序员必须放弃异常处理,而采用较弱的错误处理方法:
1)当异常处理机制调用的用户函数包括一个uncaught_exception时,在抛出完整的信息之后,异常被捕获之前的时间段内,程序员应采用较弱的错误处理方法。
2)当异常处理机制不能发现抛出的异常句柄时,堆栈中退出对象的析构函数存在一个异常时。
3)当函数被执行时,并且此函数使用atexit()注册过。
4)当一个抛出的表达式尝试重新抛出异常,并还没有异常被处理时。
5)当unexpected()函数抛出一个异常,而该异常不被前面的异常说明所允许,并且std::bad_exception不包括在异常描述中;类bad_exception的声明如下:
6)当默认的unexpected_handler被调用时。
当满足上述条件之一时,terminate()函数可以被执行。若没有匹配的句柄被发现,在函数被调用之前,不确定堆栈中的对象是否退出。在所有其他条件下,堆栈中的对象在termi- nate()函数调用之前,不应该从堆栈中退出。当确定退栈过程最终会引起调用terminate()时,制订措施不允许过早地完成堆栈的退出。