文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
7.3 noexcept 规约
使用 noexcept
(§4.5.3),人们可以抑制所有从函数抛出的异常,并允许调用者忽略抛出异常的可能性。
使用 noexcept
可以使担心性能问题(或真或假)的人们放心。它也可以通过减少控制路径的数量来改善优化效果,但前提是程序员不要通过测试返回码将这些路径添加回去。许多低级函数,例如大多数 C 函数,都不存在异常。
使用 noexcept
可以简化错误处理(如果一个函数不抛出异常,我们就不需要捕获任何异常),也可以使其复杂化(如果一个函数不能抛出异常,但又可能会失败,我们必须使用其他错误处理机制)。特别是,在异常抛出与其处理程序之间的路径上的 noexcept
,会把一个异常变成程序终止运行。因此,对于一个处于维护期的程序,在函数中使用使用 noexcept
,可能会导致先前正确的程序失败。
请注意,异常被添加到 C++ 中的一个重要原因是为了支持那些在发生错误时也决不可以无条件中止的应用。异常仅表示发生了故障,并且从 main()
到抛出点的路径上的任何代码都可以对其进行处理。特别是,这样可以支持一个重要场景:在终止之前进行一些本地清理(例如,刷新输出缓冲区,或向日志文件添加错误报告)。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论