返回介绍

7.3 noexcept 规约

发布于 2024-08-19 12:44:37 字数 610 浏览 0 评论 0 收藏 0

使用 noexcept(§4.5.3),人们可以抑制所有从函数抛出的异常,并允许调用者忽略抛出异常的可能性。

使用 noexcept 可以使担心性能问题(或真或假)的人们放心。它也可以通过减少控制路径的数量来改善优化效果,但前提是程序员不要通过测试返回码将这些路径添加回去。许多低级函数,例如大多数 C 函数,都不存在异常。

使用 noexcept 可以简化错误处理(如果一个函数不抛出异常,我们就不需要捕获任何异常),也可以使其复杂化(如果一个函数不能抛出异常,但又可能会失败,我们必须使用其他错误处理机制)。特别是,在异常抛出与其处理程序之间的路径上的 noexcept,会把一个异常变成程序终止运行。因此,对于一个处于维护期的程序,在函数中使用使用 noexcept,可能会导致先前正确的程序失败。

请注意,异常被添加到 C++ 中的一个重要原因是为了支持那些在发生错误时也决不可以无条件中止的应用。异常仅表示发生了故障,并且从 main() 到抛出点的路径上的任何代码都可以对其进行处理。特别是,这样可以支持一个重要场景:在终止之前进行一些本地清理(例如,刷新输出缓冲区,或向日志文件添加错误报告)。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文