Das folgende Programm gibt immer "Error: double 10.2" aus.Ausnahmebehandlung in C++: Werfen eines Doppels bei Verwendung von "throw (int)"
Ich verstehe nicht warum. Laut mir, wenn fun1() erlaubt nur Int geworfen werden, sollte das Programm entweder (1) crash (2) oder ändern Sie die Doppel zu einem int und dann werfen. Dies bedeutet, die Ausgabe sollte "Fehler: Int 10" sein. Dies ist jedoch nicht der Fall. Kann mir jemand erklären?
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;
}
Verwenden Sie nicht die 'throw' Funktionsdeklaration, es ist ein Mist-Feature und es wurde veraltet. – piokuc
Verwenden Sie MSVC? Es hat nie wirklich Ausnahmenspezifikationen unterstützt. – Fanael
Das sollte 'int main()' sein. –