这是我要向异常添加一些信息时经常执行的示例:
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 的构造函数。