std::unexpected

定义于头文件 <exception>
void unexpected();
(C++11 前)
[[noreturn]] void unexpected();
(C++11 起)
(弃用)
(C++17 中移除)

std::unexpected() 为 C++ 运行时在违背动态异常规定时调用:从其异常规定禁止此类型异常的函数抛出该类型异常。

亦可从程序直接调用 std::unexpected()

任一情况下, std::unexpected 调用当前安装的 std::unexpected_handler 。默认的 std::unexpected_handler 调用 std::terminate

若析构函数在栈回溯期间重置 unexpected_handler 且之后的回溯导致调用 unexpected ,则将调用于 throw 表达式结尾安装的处理函数。(注意:重抛出是否应用新的处理函数是有歧义的)

(C++11 前)

若析构函数在栈回溯期间重置 unexpected_handler ,则若之后的回溯导致调用 unexpected ,则调用哪个处理函数是未指定的。

(C++11 起)


目录

参数

(无)

返回值

(无)

异常

抛出当前安装的 std::unexpected_handler 所抛的异常

缺陷报告

下列更改行为的缺陷报告追溯地应用于以前出版的 C++ 标准。

DR 应用于 出版时的行为 正确行为
LWG 2111 C++11 在栈回溯期间调用 set_unexpected 的效果异于 C++98 并破坏一些 ABI 令它未指定

参阅

(C++17 前)
std::unexpected 所调用的函数类型
(typedef)

版本历史

  • (当前 | 先前 2017年8月27日 (日) 01:11Fruderica讨论 | 贡献. . (1,630字节) (+157). . (撤销)
  • 当前 | 先前 2013年7月2日 (二) 09:06P12bot讨论 | 贡献 . . (1,473字节) (-19). . (Use {{lc}}. Update links. Various fixes.) (撤销)
  • 当前 | 先前 2012年11月2日 (五) 14:46P12bot讨论 | 贡献 . . (1,492字节) (+225). . (r2.7.3) (机器人添加:de, en, es, fr, it, ja, pt, ru) (撤销)
  • 当前 | 先前 2012年10月26日 (五) 12:17P12讨论 | 贡献 . . (1,267字节) (0). . (1个修订: Translate from the English version) (撤销)
  • 当前 | 先前 2012年10月26日 (五) 07:00TranslationBot讨论 | 贡献. . (1,267字节) (-62). . (Translated from the English version using Google Translate) (撤销)
  • 当前 | 先前 2012年10月25日 (四) 14:25P12讨论 | 贡献 . . (1,329字节) (0). . (1个修订: Translate from the English version) (撤销)
  • 当前 | 先前) 2012年10月25日 (四) 13:00TranslationBot讨论 | 贡献. . (1,329字节) (+1,329). . (Translated from the English version using Google Translate)