std::exception
| 
 在标头  
<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 派生的标准库类没有任何要求 | 
添加要求 |