由 noexcept 关键字标注的函数不可产生未处理的异常
7.17 ID_throwInNoexcept
由 noexcept 关键字标注的函数不会抛出异常,如果存在未被处理的异常会引发 std::terminate 函数的执行,使程序异常终止。
程序异常终止所产生的问题可参见 ID_uncaughtException 的进一步讨论。
示例:
void foo() noexcept
{
throw Exception(); // Non-compliant, calls std::terminate()
}
应处理相关异常或修正异常说明:
void foo() noexcept(false)
{
throw Exception(); // Compliant
}
相关
依据
ISO/IEC 14882:2011 15.4(9)
ISO/IEC 14882:2017 18.4(5)