LB-*_*B-- 14 c++ noexcept c++11
最近在我的代码中,我已经明确地编写noexcept(false)了我知道会抛出异常的函数,主要是为了阅读代码的人.但是,我想知道这是否会影响我的代码行为或编译器解释它的方式.它有什么不同吗?
注意:我知道析构函数是隐式noexcept,你必须指定noexcept(false)更改它,我想知道其他函数.
GMa*_*ckG 15
没有异常说明符和明确说明noexcept(false)是等效的,参见§15.4/ 12:
没有异常规范的函数或具有异常
noexcept(constant-expression)表达式的异常规范的函数false允许所有异常.
因此编译器在考虑异常时不应区分它们.
更重要的是,您无需专注于noexcept(false)自己的职能.作为一名C++开发人员,您应该假设默认情况下抛出每个函数(这就是标准采取此立场的原因),因此您不会通过写出来添加新信息; 这对每个人来说都是浪费时间.
相反,请标记一个函数绝对不会抛出的特殊情况noexcept,并标记函数可能根据某些条件抛出的情况noexcept(condition).
如果您的函数故意是某些异常的来源E,请在您的文档中写下.