Boost C++ 库

one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

Boost 异常 - Boost C++ 函数库

Boost Exception

注意: 当目标平台为 C++11 或更新版本,并且可用 Boost 1.75 或更新版本时,建议使用 Boost LEAF 而非 Boost Exception。LEAF 具有相似的功能,但接口更优雅,效率更高,并且可以在有或无异常处理的情况下工作——同时它也能理解 Boost Exception 的错误信息,以兼容旧版源代码。这个 概述 解释了两个 API 之间的区别(Boost Exception 被弃用,并将继续得到支持,包括 C++03 兼容性)。

介绍

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

它支持将任意数据传递到 `catch` 块,这在没有 `no-throw` 要求(15.5.1)的情况下对于异常类型来说是棘手的。数据可以添加到任何异常对象中,可以直接在 `throw_expression` 中(15.1),或者在异常对象在调用栈中传播时稍后添加。

在异常对象已经传递给 `throw` 之后还能添加数据的能力非常重要,因为在检测到失败的上下文中,有时并不掌握处理该异常所需的所有信息。

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

目录

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

致谢

感谢 Peter Dimov 的持续帮助。也感谢 Tobias Schwinger、Tom Brinkman、Pavel Vozenilek 以及所有参与评审过程的人。