本章介绍的模式可以看作是我们之前学习的RAII惯用法的一种推广。它最早是一种古老而成熟的C++模式,但也特别受益于C++11、C++14和C++17中新增的语言特性。我们将见证随着语言功能的增强,这一模式的演进过程。ScopeGuard模式存在于声明式编程(说明希望发生什么,而不是如何实现)与错误安全程序(尤其是异常安全)的交汇点。在完全理解ScopeGuard之前,需要对这两方面都有所了解。
本章将涵盖以下主题:
如何编写错误安全和异常安全的代码?RAII如何使错误处理更简单?
错误处理中的“可组合性”是什么?
为什么RAII在错误处理方面还不够强大,以及它是如何推广?如何在C++中实现声明式错误处理?