Namespaces
Variants

std::exception

来自 zh.cppreference.net
 
 
 
 
 
定义于头文件 <exception>
class exception;

提供一致的接口以通过 throw 表达式。

标准库产生的所有异常都继承自 std::exception。

的所有成员函数std::exception都是constexpr。

(自 C++26 起)

成员函数

构造异常对象
(公开成员函数)
[virtual]
销毁异常对象
(虚公开成员函数)
复制异常对象
(公开成员函数)
[virtual]
返回说明性字符串
(虚公开成员函数)

标准异常要求

每个从 std::exception 派生的标准库类 T 都具有以下公开可访问的成员函数,其中每个函数 不会因异常而退出 (C++11 前) 具有 不抛出的异常规范 (C++11 起) :

复制构造函数与复制赋值运算符满足以下后置条件:

  • 如果两个对象 lhs 和 rhs 都具有动态类型 T ,且 lhs 是 rhs 的副本,则 std:: strcmp ( lhs. what ( ) , rhs. what ( ) ) 等于 ​ 0 ​ 。

每个此类 T 的 what() 成员函数均满足为 std::exception::what() 所规定的约束条件。

标准异常

(自 C++11 起)
(自 C++11 起)
(自 C++17 起)
(TM TS)
(自 C++20 起)
(自 C++17 起)
(自 C++23 起)
(自 C++11 起)
(自 C++11 起)
(C++11 前)
(自 C++17 起)

注释

功能测试 宏 值 标准 功能
__cpp_lib_constexpr_exceptions 202411L (C++26) constexpr for exception types

缺陷报告

以下行为变更缺陷报告被追溯应用于先前发布的C++标准。

DR 适用范围 发布时的行为 正确行为
LWG 471 C++98 未对继承自 std::exception 的标准库类提出要求 已添加