Il seguente programma emette sempre "Errore: doppio 10.2".gestione delle eccezioni in C++: lancio di un doppio quando si utilizza "throw (int)"
Non capisco perché. Secondo me, se fun1() consente di lanciare solo int, il programma deve arrestare (1) o cambiare il doppio in un int e poi lanciare. Ciò significa che l'output dovrebbe essere "Errore: int 10". Tuttavia, questo non è il caso. Qualcuno può spiegare ??
void fun1() throw (int)
{
cout<<"3";
throw 10.2;
cout<<"4";
}
int main()
{
try { fun1(); }
catch(int i) { cout<<"Error:int" <<i <<endl;}
catch(double i) { cout << "Error:double" << i << endl; }
cout << endl;
return 0;
}
Non utilizzare la dichiarazione di funzione "throw", è una funzionalità schifosa ed è stata deprecata. – piokuc
Stai usando MSVC? Non ha mai veramente supportato le specifiche delle eccezioni. – Fanael
Questo dovrebbe essere 'int main()'. –