std::exception
来自 cppreference.com
定义在头文件中 <exception> |
||
class exception; |
||
提供一致的接口,通过 抛出表达式 处理错误。
标准库生成的所有异常都继承自 std::exception
。
内容 |
[编辑] 成员函数
构造异常对象 (公有成员函数) | |
[虚函数] |
销毁异常对象 (虚拟公有成员函数) |
复制异常对象 (公有成员函数) | |
[虚函数] |
返回解释性字符串 (虚拟公有成员函数) |
[编辑] 标准异常要求
每个继承自 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 起)
[编辑] 缺陷报告
以下行为变更的缺陷报告被追溯应用于之前发布的 C++ 标准。
DR | 应用于 | 已发布的行为 | 正确行为 |
---|---|---|---|
LWG 471 | C++98 | 没有对从 std::exception 派生的标准库类进行要求 |
已添加 |