跳到主要内容

exceptions

异常处理与 noexcept

异常用于报告错误并进行栈展开,RAII 确保资源在异常路径自动释放。

要点:

  • 接口层可用异常,边界处尽量“收敛”异常(转换为状态码/expected 风格)。
  • 正确标注 noexcept(尤其是移动操作),使标准容器可采用更高效路径。
  • 禁止在析构函数中逃逸异常。
struct X {
X() = default;
X(X&&) noexcept = default; // 移动不抛异常
~X() noexcept = default; // 析构不抛
};