Exception mit try/catch falsche Eingabe
-
Hi,
ich hab ein Problem mit einer Ausnahmebehandlung. Der Code steht in einer Schleife. In der Schleife soll ein integer Wert eingegeben werde. Aber wenn kein interger eingegeben wird läuft die Schleife endlos weiter und ich kann sie nicht mehr auf halten.
Hab es vorhin mit try catch probiert, aber hab immer noch das selbe Problem.
try { cin >> ieingabe; } catch (...) { cout << "Falsche Eingabe. Es duerfen nur Zahlen eingegeben werden."; cin.get(); }
-
Wenn bei einem Stream eine falsche Eingabe kommt, dann wird der Stream ungültig und weitere Eingaben schlagen einfach fehl. Du kannst mit
good(),operator!oderoperator void*nach jeder Eingabe prüfen, ob der Stream noch gültig ist.Alternativ kannst du mit der Funktion
exceptionsagen, wann eine Exception fliegen soll.Grüssli
-
sauber danke. der code hier hat mein Problem gelöst
cin >> ieingabe; if (!cin.good()) { cin.clear(); //clear the error flags cin.sync(); //flush the input buffer }edit: wird bei solchen Eingaben kein Exception ausgelöst?
-
Chiiter schrieb:
edit: wird bei solchen Eingaben kein Exception ausgelöst?
Dravere schrieb:
Alternativ kannst du mit der Funktion
exceptionsagen, wann eine Exception fliegen soll.Standardmässig ist das Flag auf 0 gesetzt, also es wird keine Exception geworfen.
Grüssli