指定该函数引发异常的首选方法

时间:2019-09-09 16:22:51

标签: c++

我要记录该函数引发异常

  1. 那些样品是否低于等价物?
  2. 首选方式是什么?
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)

2 个答案:

答案 0 :(得分:3)

第三个。

您绝对应该写一条注释,解释该函数可能引发什么异常,以及什么时候意味着异常。

否则,使用您的函数的人必须检查其实现并自行解决。每次。不好!<​​/ p>

将注释放在您已经拥有的注释旁边(正确吗?),列出先决条件和后置条件并解释该函数的作用。

答案 1 :(得分:2)

  
      
  1. 那些样品是否低于等价物?
  2.   

throw(...)与其他两者不同,已被弃用,并将在以后的标准中删除。

就语言而言,

第二和第三是相互等效的(例外适用 1 )。缺少异常说明意味着该函数可能会抛出(也 1 )。

记录下抛出什么异常以及在哪种情况下是一个好习惯。


1 解除分配函数和析构函数是隐式非抛出的,但可以通过其他方式显式指定。隐式生成或默认的特殊成员函数等可以从基类/成员“继承”规范,即,除非基类或成员潜在地抛出,否则它们隐式地不抛出。