最近在我的代码中我明确地写了noexcept(false)
我知道的函数确实会抛出异常,主要是对于阅读代码的人来说。但是,我想知道这是否会影响我的代码的行为或编译器解释它的方式。有什么区别吗?
注意:我知道析构函数隐式为 noexcept 并且您必须指定noexcept(false)
为了改变这一点,我想知道其他功能。
没有异常说明符并明确说明noexcept(false)
是等价的,参见§15.4/12:
没有异常规范或具有以下形式的异常规范的函数noexcept(constant-expression)
其中常量表达式产生false
允许所有例外。
因此编译器在考虑异常时不应该区分它们。
更重要的是,你没必要再去纠缠noexcept(false)
到你的职能。作为一名 C++ 开发人员,您应该假设每个函数默认都会抛出异常(这就是标准采取这种立场的原因),因此您不会通过写出新信息来添加新信息;这对每个人来说都是浪费时间。
相反,请标记函数的特殊情况确实不抛出noexcept
,并标记函数的情况may根据某些条件抛出noexcept(condition)
.
如果您的函数故意成为某些异常的来源E
,将其写入您的文档中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)