创建从现有派生的新异常

时间:2013-08-02 20:39:45

标签: c++ exception

有许多方法可以创建从其他异常派生的新异常。一种方法是使用this

之类的东西
struct MyException : public exception
{
  const char * what () const throw ()
  {
    return "C++ Exception";
  }
};

另一种方法是调用基类的构造函数。

class My:public runtime_error
{
public:
    My(string s):runtime_error(s){}
};

第二种方法显然给了我插入(创建时)what()方法输出的字符串的优点。我的问题是我应该选择哪种方法,以及是否需要使用第一种方法。

1 个答案:

答案 0 :(得分:1)

如果你真的只想使用字符串文字,你可以选择第一个选项,但是,第二个是你在任何地方看到的默认选项。

但是,如果他们决定稍后扩展C ++异常类,那么就不是这种情况,而是基于异常字符串的第二种方法会遇到问题。所以我认为没有任何理由可以使用第一个版本。

顺便说一句:({1}}不是noexcept