函数
<exception>

std::terminate

void terminate();
[[noreturn]] void terminate() noexcept;
处理因异常而终止的函数
调用当前的terminate handler

默认情况下,terminate handler 调用 abort。但是可以通过调用 set_terminate 来重新定义此行为。

当找不到已抛出异常的 catch 处理器,或出现其他无法继续异常处理过程的异常情况时,会自动调用此函数。

提供此函数是为了让程序在需要异常终止时能够显式调用terminate handler。即使没有调用 set_terminate 来设置自定义terminate handler(此时调用 abort),此函数也能正常工作。

返回值

无(该函数永不返回)。

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// 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


异常安全

无异常保证:此函数从不抛出异常。

另见