Este es un ejemplo de lo que hago a menudo cuando quiero agregar información a una excepción:
std::stringstream errMsg;
errMsg << "Could not load config file '" << configfile << "'";
throw std::exception(errMsg.str().c_str());
¿Existe una forma mejor de hacerlo?
std::string
tiene un constructor implícito que toma un const char*
...
std::exception
las clases secundarias de MS , y es utilizado por sus versiones de std::runtime_error
y std::logic_error
. Aparte de los definidos por el estándar, la versión de MSVS <exception>
también incluye dos constructores más, uno tomando (const char * const &)
y el otro tomando (const char * const &, int)
. Se utilizan para establecer una variable privada const char * _Mywhat
; si _Mywhat != nullptr
, por what()
defecto lo devuelve. El código que se basa en él probablemente no sea portátil.
std∷exception
no tienen un constructor conchar*
arg.