Namespaces
Variants

Diagnostics library

From cppreference.net

目录

异常处理

头文件 <exception> 提供了多个与 C++ 程序中异常处理相关的类和函数。

定义于头文件 <exception>
标准库组件抛出异常的基类
(类)
异常对象的捕获与存储
( C++20 中移除* ) (C++17)
检查异常处理是否正在进行中
(函数)
用于处理异常对象的共享指针类型
(类型定义)
从异常对象创建 std::exception_ptr
(函数模板)
std::exception_ptr 中捕获当前异常
(函数)
std::exception_ptr 抛出异常
(函数)
用于捕获和存储当前异常的混入类型
(类)
将其参数与 std::nested_exception 混合后抛出
(函数模板)
std::nested_exception 抛出异常
(函数模板)
异常处理失败的处理
定义于头文件 <exception>
异常处理失败时调用的函数
(函数)
std::terminate 调用的函数类型
(类型定义)
获取当前的 terminate_handler
(函数)
更改由 std::terminate 调用的函数
(函数)
std::current_exception 无法复制异常对象时抛出的异常
(类)
异常规范违规的处理 (C++17 前)
(C++11 中弃用) (C++17 中移除)
动态异常规范被违反时调用的函数
(函数)
(C++11 中弃用) (C++17 中移除)
std::unexpected 调用的函数类型
(类型定义)
(C++11 中弃用) (C++17 中移除)
获取当前的 unexpected_handler
(函数)
(C++11 中弃用) (C++17 中移除)
更改由 std::unexpected 调用的函数
(函数)

异常类别

头文件 <stdexcept> 中预定义了几个便捷类用于报告特定错误条件。这些类可分为两类: 逻辑 错误和 运行时 错误。逻辑错误是程序内部逻辑缺陷导致的后果,通常可以避免。运行时错误由程序作用域之外的事件引发,难以预测。

定义于头文件 <stdexcept>
指示违反逻辑前置条件或类不变量的异常类
(类)
报告无效参数的异常类
(类)
报告定义域错误的异常类
(类)
报告尝试超出允许的最大长度的异常类
(类)
报告超出预期范围参数的异常类
(类)
指示仅在运行时可检测到异常的异常类
(类)
报告内部计算中范围错误的异常类
(类)
报告算术上溢的异常类
(类)
报告算术下溢的异常类
(类)
用于取消原子事务的异常类
(类模板)

错误代码

定义于头文件 <cerrno>
扩展为符合POSIX标准的线程局部错误编号变量的宏
(宏变量)
标准POSIX兼容错误条件的宏
(宏常量)

系统错误 (自 C++11 起)

头文件 <system_error> 定义了用于报告源自操作系统、流I/O、 std::future 或其他底层API的错误条件的类型和函数。

定义于头文件 <system_error>
错误类别的基类
(类)
标识通用错误类别
(函数)
标识操作系统错误类别
(函数)
持有可移植错误码
(类)
(C++11)
std::error_condition 枚举,列出所有标准 <cerrno> 宏常量
(类)
(C++11)
持有平台相关错误码
(类)
用于报告具有 error_code 的条件的异常类
(类)

断言

断言有助于在程序中实现前置条件的检查。

定义于头文件 <cassert>
若用户指定的条件不为 true 则终止程序。发行版本中可能被禁用。
(函数宏)

堆栈追踪 (自 C++23 起)

定义于头文件 <stacktrace>
栈踪中单个调用记录的表示
(类)
由栈踪条目组成的调用序列的近似表示
(类模板)

调试支持 (since C++26)

定义于头文件 <debugging>
(C++26)
调用时暂停正在运行的程序
(函数)
std::is_debugger_present 返回 true 则调用 std::breakpoint
(函数)
检查程序是否在调试器控制下运行
(函数)

参见

static_assert 声明 (C++11) 执行编译时断言检查
C 文档 关于 错误处理