我要记录该函数引发异常
void validate_input(const std::string &on) throw(...)
void validate_input(const std::string &on) noexcept(false)
// throws std::runtime_error if input is invalid
void validate_input(const std::string &on)
答案 0 :(得分:3)
第三个。
您绝对应该写一条注释,解释该函数可能引发什么异常,以及什么时候意味着异常。
否则,使用您的函数的人必须检查其实现并自行解决。每次。不好!</ p>
将注释放在您已经拥有的注释旁边(正确吗?),列出先决条件和后置条件并解释该函数的作用。
答案 1 :(得分:2)
- 那些样品是否低于等价物?
throw(...)
与其他两者不同,已被弃用,并将在以后的标准中删除。
第二和第三是相互等效的(例外适用 1 )。缺少异常说明意味着该函数可能会抛出(也 1 )。
记录下抛出什么异常以及在哪种情况下是一个好习惯。
1 解除分配函数和析构函数是隐式非抛出的,但可以通过其他方式显式指定。隐式生成或默认的特殊成员函数等可以从基类/成员“继承”规范,即,除非基类或成员潜在地抛出,否则它们隐式地不抛出。