这是我要向异常添加一些信息时经常执行的示例:
std::stringstream errMsg;
errMsg << "Could not load config file '" << configfile << "'";
throw std::exception(errMsg.str().c_str());
有更好的方法吗?
std::string
有一个隐式构造函数,它需要一个const char*
...
std::exception
的子类,并且被他们的版本std::runtime_error
和std::logic_error
。除了标准定义的<exception>
构造器之外,MSVS的版本还包括另外两个构造函数,一个构造函数(const char * const &)
和另一个构造函数(const char * const &, int)
。它们用于设置私有变量const char * _Mywhat
;如果为_Mywhat != nullptr
,则what()
默认返回它。依赖它的代码可能无法移植。
std∷exception
没有带有char*
arg 的构造函数。