std::exception
来自cppreference.com
在标头 <exception> 定义
|
||
class exception; |
||
提供一致的接口,以通过 throw 表达式处理错误。
标准库所生成的所有异常都继承自 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() 所受到的制约。
标准异常
- 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++ 标准。
缺陷报告 | 应用于 | 出版时的行为 | 正确行为 |
---|---|---|---|
LWG 471 | C++98 | 对从 std::exception 派生的标准库类没有任何要求
|
添加要求 |