std::exception
来自 cppreference.cn
定义于头文件 <exception> |
||
class exception; |
||
提供一致的接口来通过 throw 表达式 处理错误。
标准库生成的所有异常都继承自 std::exception
。
|
(自 C++26 起) |
目录 |
[编辑] 成员函数
构造异常对象 (公有成员函数) | |
[虚函数] |
销毁异常对象 (虚公有成员函数) |
复制异常对象 (公有成员函数) | |
[虚函数] |
返回解释性字符串 (虚公有成员函数) |
[编辑] 标准异常要求
每个从 std::exception
派生的标准库类 T
都具有以下公共可访问的成员函数,它们都是 不抛出异常退出(直到 C++11)具有非抛出异常规范(自 C++11 起)
复制构造函数和复制赋值运算符满足以下后置条件
- 如果两个对象 lhs 和 rhs 都具有动态类型
T
并且 lhs 是 rhs 的副本,则 std::strcmp(lhs.what(), rhs.what()) 等于 0。
每个此类 T
的 what()
成员函数都满足为 std::exception::what() 指定的约束。
[编辑] 标准异常
- invalid_argument
- domain_error
- length_error
- out_of_range
- future_error (自 C++11 起)
- range_error
- overflow_error
- underflow_error
- regex_error (自 C++11 起)
- system_error (自 C++11 起)
- ios_base::failure (自 C++11 起)
- filesystem::filesystem_error (自 C++17 起)
- tx_exception (TM TS)
- nonexistent_local_time (自 C++20 起)
- ambiguous_local_time (自 C++20 起)
- format_error (自 C++20 起)
- bad_any_cast (自 C++17 起)
- bad_optional_access (自 C++17 起)
- bad_expected_access (自 C++23 起)
- bad_weak_ptr (自 C++11 起)
- bad_function_call (自 C++11 起)
- bad_alloc
- bad_array_new_length (自 C++11 起)
- bad_exception
- ios_base::failure (直到 C++11)
- bad_variant_access (自 C++17 起)
[编辑] 注释
特性测试 宏 | 值 | Std | 特性 |
---|---|---|---|
__cpp_lib_constexpr_exceptions |
202411L |
(C++26) | constexpr 用于异常类型 |
[编辑] 缺陷报告
以下行为变更缺陷报告被追溯应用于先前发布的 C++ 标准。
DR | 应用于 | 已发布行为 | 正确行为 |
---|---|---|---|
LWG 471 | C++98 | 对从 std::exception 派生的标准库类没有要求 |
已添加 |