Boost C++ 库

...世界上最受尊敬和专家设计的 C++ 库项目之一。 Herb SutterAndrei Alexandrescu, C++ 编码规范

Boost.Exception

注意: 当目标平台为 C++11 或更高版本,并且 Boost 版本为 1.75 或更高版本时,建议使用 Boost.LEAF 来代替 Boost.Exception。LEAF 的用途类似,但它具有更优雅的接口,效率更高,并且无论是否启用异常处理都能正常工作 —— 同时为了兼容遗留代码,它也能够理解 Boost.Exception 的错误信息。 此概述解释了两个 API 之间的区别(Boost.Exception 并不会被弃用,并将继续得到支持,包括对 C++03 的兼容性)。

简介

Boost.Exception 的目的是简化异常类层次结构的设计,并帮助编写异常处理和错误报告代码。

它支持将任意数据传输到 catch 站点,由于异常类型的无抛出要求 (15.5.1),这在其他情况下是很棘手的。可以直接在 throw 表达式 (15.1) 中或在异常对象沿调用堆栈向上传播时,将数据添加到任何异常对象。

能够在异常对象传递给 throw 之后向其添加数据非常重要,因为在检测到故障的上下文中,通常无法获得处理异常所需的一些信息。

Boost.Exception 还支持 N2179 风格的异常对象复制,该功能由 boost::throw_exception 函数以非侵入式和自动化的方式实现。

目录

  1. 动机
  2. 教程
  3. 文档
  4. API
  5. 常见问题
  6. 页面索引

致谢

感谢 Peter Dimov 一直以来的帮助。同时也感谢 Tobias Schwinger、Tom Brinkman、Pavel Vozenilek 以及所有参与审查过程的人。