Ausnahmebehandlung mit try / catch



  • Hallo,

    micht würde interessieren, ob es möglich ist den typ der catch- Anweisung so zu gestalten, dass dieser beispielsweise aktiv wird, wenn eine Eingabe den falschen Datentyp besitzt:

    Wenn ich nun eine Eingabe über die Konsole erwarte und diese mit

    eingabe= Convert::ToInt32(Console::ReadLine())
    

    in einen Integertyp konvertieren möchte, jedoch ein Buchstabe eingeben wurde...

    wie fängt man so einen Fall am günstigsten ab?

    Vielen dank & mfg Dragon



  • Int32.TryParse, damit vermeidest die in diesem Fall eigentlich unnötige Exception. Ansonsten gehts natürlich auch mit nen try Block um das Convert... da eine FormatException geworfen wird, sobald der eingelesene String nicht umgewandelt werden kann in einen Int.



  • Talla schrieb:

    Int32.TryParse, damit vermeidest die in diesem Fall eigentlich unnötige Exception. Ansonsten gehts natürlich auch mit nen try Block um das Convert... da eine FormatException geworfen wird, sobald der eingelesene String nicht umgewandelt werden kann in einen Int.

    hallo nochmals und danke für die schnelle Antwort 🙂

    nun stellt sich für mich die Frage, wo

    Int32.TryParse
    

    anwenden muss...
    => schreibe ich das vor die Wertzuweisung meiner Variable "eingabe"?
    ----

    wenn ich hingegen einen try-block verwenden würde, dann verlangt die zugehörige catch-Anweisung doch eine Bedingung, welche Ausnahme sie denn behandeln soll:
    Darauf wollte ich in meinem ersten post bereits hinaus 😉

    => ich denke mal, dass ein try-Block allein nicht viel bewirken würde, oder liege ich mit dieser Ansicht falsch?

    mfg Dragon



  • T-Dragonmaster XII schrieb:

    => schreibe ich das vor die Wertzuweisung meiner Variable "eingabe"?

    RTFM! Read the friendly manual 🙂 TryParse hat im Prinzip zwei Rückgabewerte. Nen boolscher Wert als direkter Rückgabetyp der anzeigt ob die Konvertierung geklappt hat, und nen out Parameter wo du die Variable angibst wo der zu speichernde Wert landet. kurz gesagt, es ist die Zuweisung deiner Variablen.

    T-Dragonmaster XII schrieb:

    wenn ich hingegen einen try-block verwenden würde, dann verlangt die zugehörige catch-Anweisung doch eine Bedingung, welche Ausnahme sie denn behandeln soll:
    Darauf wollte ich in meinem ersten post bereits hinaus 😉

    Naja, abgesehen davon dass ich die entsprechende Exception genannt hab in meinem Post, gibts auch da wieder nur ein Mittel das immer hilft: Doku lesen 🙂
    Vorteil dieser Variante - ob man es glaubt oder nicht, in der MSDN Lib gibts hunderte Beispiele wo sich(jetzt nicht auf dich bezogen) die meisten Fragen hier im Forum von alleine erledigen würden, aber naja, Doku lesen ist heutzutage anscheiend nicht mehr "in".



  • Vielen Dank => nun funktioniert alles wunschgemäß 🙂

    und zum Thema Doku lesen: leider sind diese meiner Meinung nach sehr überladen, sodass man als Anfänger recht großte Schwierigkeiten hat, sich dort zurecht zu finden 😞

    mfg Dragon


Anmelden zum Antworten