由 noexcept 标记的函数不可产生未处理的异常
7.15 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)