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();
    		}
    

  • Administrator

    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! oder operator void* nach jeder Eingabe prüfen, ob der Stream noch gültig ist.

    Alternativ kannst du mit der Funktion exception sagen, 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?


  • Administrator

    Chiiter schrieb:

    edit: wird bei solchen Eingaben kein Exception ausgelöst?

    Dravere schrieb:

    Alternativ kannst du mit der Funktion exception sagen, wann eine Exception fliegen soll.

    Standardmässig ist das Flag auf 0 gesetzt, also es wird keine Exception geworfen.

    Grüssli


Anmelden zum Antworten