std::
terminate
函数 <exception>
C++11 |
noreturn void terminate() noexcept; |
处理异常终止的函数
调用当前终止处理程序。
默认情况下,terminate处理程序调用abort。但是这个行为可以通过调用set_terminate函数来重新定义。
当无法为抛出的异常找到catch处理程序时,或在某些其他异常情况下无法继续异常处理过程时,将自动调用此函数。
提供这个函数是为了让需要异常终止的程序可以显式地调用终止处理程序,
并且即使set_terminate没有用于设置自定义终止处理程序(在这种情况下调用abort)也能工作。
☉ 返回值
-
None(函数永远不会返回)。
☣ 示例
// terminate example
#include <iostream> // std::cout, std::cerr
#include <exception> // std::exception, std::terminate
int main (void) {
char* p;
std::cout << "Attempting to allocate 1 GiB...";
try {
p = new char [1024*1024*1024];
}
catch (std::exception& e) {
std::cerr << "ERROR: could not allocate storage\n";
std::terminate();
}
std::cout << "Ok\n";
delete[] p;
return 0;
}
|
可能输出:
Attempting to allocate 1 GiB... Ok
☂ 异常安全性
无抛出保证:该成员函数从不抛出异常。
🍄 另请参阅