有许多方法可以创建从其他异常派生的新异常。一种方法是使用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()方法输出的字符串的优点。我的问题是我应该选择哪种方法,以及是否需要使用第一种方法。
答案 0 :(得分:1)
如果你真的只想使用字符串文字,你可以选择第一个选项,但是,第二个是你在任何地方看到的默认选项。
但是,如果他们决定稍后扩展C ++异常类,那么就不是这种情况,而是基于异常字符串的第二种方法会遇到问题。所以我认为没有任何理由可以使用第一个版本。
顺便说一句:({1}}不是noexcept