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() 所指定的约束。
[编辑] 标准异常
- 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 起)
[编辑] 注意
特性测试宏 | 值 | 标准 | 特性 |
---|---|---|---|
__cpp_lib_constexpr_exceptions |
202411L |
(C++26) | 异常类型的 constexpr |
[编辑] 缺陷报告
下列更改行为的缺陷报告追溯地应用于以前出版的 C++ 标准。
缺陷报告 | 应用于 | 发布时的行为 | 正确的行为 |
---|---|---|---|
LWG 471 | C++98 | 对于从 std::exception 派生的标准库类没有要求 |
已添加 |