错误处理
来自cppreference.com
< cpp
异常处理
头文件 <exception>
提供数个关联于 C++ 程序中异常处理的类与函数。
定义于头文件
<exception> | |
标准库组件抛出的各种异常的基类 (类) | |
异常对象的捕获与存储 | |
(C++20 中移除)(C++17) |
检查当前是否正在进行异常处理 (函数) |
(C++11) |
用于处理异常对象的共享指针类型 (typedef) |
(C++11) |
从异常对象创建一个std::exception_ptr (函数模板) |
(C++11) |
捕获当前异常到 std::exception_ptr 之中 (函数) |
(C++11) |
从一个 std::exception_ptr 抛出异常 (函数) |
(C++11) |
用于捕获并存储当前异常的混入类型 (类) |
(C++11) |
抛出实参,带上混入的 std::nested_exception (函数模板) |
(C++11) |
抛出 std::nested_exception 中的异常 (函数模板) |
异常处理中的失败处理 | |
定义于头文件
<exception> | |
异常处理失败时调用的函数 (函数) | |
std::terminate 所调用的函数类型 (typedef) | |
(C++11) |
获得当前的 terminate_handler (函数) |
更改将被 std::terminate 调用的函数 (函数) | |
当 std::current_exception 无法复制异常对象时抛出的异常 (类) | |
异常规定违规处理( C++17 中移除) | |
(C++17 中移除) |
违背动态异常说明时调用的函数 (函数) |
(C++17 中移除) |
std::unexpected 所调用的函数类型 (typedef) |
(C++11)(C++17 中移除) |
获得当前的 unexpected_handler (函数) |
(C++17 中移除) |
更改要被 std::unexpected 调用的函数 (函数) |
异常类别
数个便利异常类预定义于头文件 <stdexcept>
以报告特定的错误条件。这些类可分为二个类别:逻辑错误与运行时错误。逻辑错误是程序中错误逻辑的后果,而且可以避免。运行时错误来源于程序作用域以外的事件,且无法简单预测。
定义于头文件
<stdexcept> | |
指示违背逻辑前提条件或类不变量的异常类 (类) | |
报告非法参数的异常类 (类) | |
报告定义域错误的异常类 (类) | |
报告试图超出最大允许大小的异常类 (类) | |
报告参数落在期待范围外的异常类 (类) | |
指示条件只可于运行时检测的异常类 (类) | |
报告内部计算中值域错误的异常类 (类) | |
报告算术上溢的异常类 (类) | |
报告算术下溢的异常类 (类) | |
(TM TS) |
取消原子事务的异常类 (类模板) |
错误号
定义于头文件
<cerrno> | |
展开成 POSIX 兼容的线程局域错误号变量的宏 (宏变量) | |
兼容标准 POSIX 的错误条件的宏 (宏常量) |
断言
帮助实现程序中前置条件检查的断言。
定义于头文件
<cassert> | |
若用户指定的条件非 true 则中断程序。可以在发行构建中禁用 (宏函数) |
系统错误
头文件 <system_error>
定义用于报告源于操作系统、流 I/O 、 std::future 或其他低层 API 的错误条件的类型和函数。
定义于头文件
<system_error> | |
(C++11) |
错误类别的基类 (类) |
(C++11) |
鉴别通用错误类别 (函数) |
(C++11) |
鉴别操作系统错误类别 (函数) |
(C++11) |
保有可移植的错误码 (类) |
(C++11) |
列出所有标准 <cerrno> 宏常量的 std::error_condition 枚举 (类) |
(C++11) |
保有依赖于平台的错误码 (类) |
(C++11) |
用于报告拥有 error_code 的错误条件的异常类 (类) |
参阅
静态断言 | 进行编译时断言检查 (C++11 起) |