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

由 noexcept 关键字标注的函数不可产生未处理的异常

7.17 ID_throwInNoexcept
目录 › next › previous

由 noexcept 关键字标注的函数不会抛出异常,如果存在未被处理的异常会引发 std::terminate 函数的执行,使程序异常终止。

程序异常终止所产生的问题可参见 ID_uncaughtException 的进一步讨论。

示例:

void foo() noexcept
{
    throw Exception();   // Non-compliant, calls std::terminate()
}

应处理相关异常或修正异常说明:

void foo() noexcept(false)
{
    throw Exception();   // Compliant
}

相关

ID_uncaughtException ID_missingNoexcept

依据

ISO/IEC 14882:2011 15.4(9) ISO/IEC 14882:2017 18.4(5)

参考

SEI CERT ERR55-CPP
Copyright©2024 360 Security Technology Inc., Licensed under the Apache-2.0 license.