Sto scrivendo un'applicazione abbastanza semplice in C++ usando g ++ sotto Linux e sto provando a lanciare alcune stringhe come eccezioni (sì, lo so, non è una buona pratica).Che tipo dovrei prendere se lancio una stringa letterale?
Ho il codice seguente (semplificato):
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;
}
}
e ottengo Unknow error
sulla console. Ma se eseguo il cast statico della stringa letterale su std :: string o char *, stampa Error: not implemented
come previsto. La mia domanda è: quindi qual è il tipo che dovrei prendere se non voglio usare i cast statici?
Domanda stupida: qualcuno lancia cose che non ereditano da 'std :: exception' nel codice reale? (A parte il 'SuicideException', e no, non è derision: p) –