☰
  • 首页
  • 规则分类
  • 项目介绍
search
•••

使用 noexcept 关键字标注不抛出异常的函数

7.16 ID_missingNoexcept
目录 › next › previous

明确标注函数是否会抛出异常可以提升可读性,有助于异常安全理念的实施,编译器也可以其为依据进行优化。

示例:

double area(double x) noexcept {   // Compliant
    double s = x * 3 / 2;
    return sqrt(s * pow(s - x, 3));
}

为了保障异常安全,首先要明确函数是否会抛出异常,以便调用者妥善安排操作步骤和处理方式。例中 area 函数由数学运算表达式和 C 库函数组成,不会抛出异常,将其标记为 noexcept 是合理的。

关于异常安全的进一步讨论,可参见 ID_exceptionUnsafe。

相关

ID_exceptionUnsafe ID_throwInNoexcept

依据

ISO/IEC 14882:2011 15.4 ISO/IEC 14882:2017 18.4

参考

C++ Core Guidelines E.12
Copyright©2024 360 Security Technology Inc., Licensed under the Apache-2.0 license.