使用 noexcept 关键字标注不抛出异常的函数
7.16 ID_missingNoexcept
明确标注函数是否会抛出异常可以提升可读性,有助于异常安全理念的实施,编译器也可以其为依据进行优化。
示例:
double area(double x) noexcept { // Compliant
double s = x * 3 / 2;
return sqrt(s * pow(s - x, 3));
}
为了保障异常安全,首先要明确函数是否会抛出异常,以便调用者妥善安排操作步骤和处理方式。例中 area 函数由数学运算表达式和 C 库函数组成,不会抛出异常,将其标记为 noexcept 是合理的。
关于异常安全的进一步讨论,可参见 ID_exceptionUnsafe。
相关
依据
ISO/IEC 14882:2011 15.4
ISO/IEC 14882:2017 18.4