|
在任何编程语言中实现可靠的错误处理都颇有挑战性。 尽管异常提供多项功能来支持妥善的错误处理,但它们不能代你解决一切问题。 为了实现异常机制的优势,请在设计代码时考虑到异常。
使用断言来检查永远不应发生的错误。 使用异常来检查可能发生的错误,例如公共函数参数的输入验证错误。 有关详细信息,请参阅异常与断言部分。
当处理错误的代码与通过一个或多个中间函数调用检测错误的代码分离时,请使用异常。 当处理错误的代码与检测错误的代码紧密耦合时,请考虑是否在性能关键型循环中使用错误代码。
对于每个可能引发或传播异常的函数,请提供三项异常保证之一:强保证、基本保证或 nothrow (noexcept) 保证。 有关详细信息,请参阅如何:针对异常安全性进行设计。
通过值引发异常,通过引用捕获异常。 不要捕获无法处理的异常。
不要使用 C++11 中已弃用的异常规范。 有关详细信息,请参阅异常规范和 noexcept 部分。
使用适用的标准库异常类型。 从 exception 类层次结构派生自定义的异常类型。
不要允许异常从析构函数或内存解除分配函数中逃逸。
|
|