Następujący program zawsze wyświetla "Błąd: podwójne 10.2".Obsługa wyjątków w C++: Rzucanie podwójnym przy użyciu "throw (int)"
Nie rozumiem dlaczego. Według mnie, jeśli fun1() pozwala tylko na wyrzucenie int, program powinien albo (1) rozbić (2) lub zmienić double na int, a następnie wyrzucić. Oznacza to, że wyjście powinno być "Błąd: int 10". Tak jednak nie jest. Czy ktoś może wyjaśnić?
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;
}
Nie używaj deklaracji funkcji "throw", jest to funkcja crap i została wycofana. – piokuc
Czy używasz MSVC? Nigdy nie obsługiwał specyfikacji wyjątków. – Fanael
To powinno być 'int main()'. –