Estoy escribiendo una aplicación bastante simple en C++ usando g ++ bajo Linux y estoy tratando de lanzar algunas cadenas sin formato como excepciones (sí, lo sé, no es una buena práctica).¿Qué tipo debo capturar si arrojo una cadena literal?
Tengo el siguiente código (simplificado):
int main()
{
try
{
throw "not implemented";
}
catch(std::string &error)
{
cerr<<"Error: "<<error<<endl;
}
catch(char* error)
{
cerr<<"Error: "<<error<<endl;
}
catch(...)
{
cerr<<"Unknown error"<<endl;
}
}
y me sale Unknow error
en la consola. Pero si fijo la cadena literal a std :: string o char * imprime Error: not implemented
como se esperaba. Mi pregunta es: ¿cuál es el tipo que debería capturar si no quiero usar moldes estáticos?
Pregunta estúpida: ¿Alguien arroja cosas que no heredan de 'std :: exception' en código real? (Aparte de 'SuicideException', y no, no es burla: p) –