C# Try-Catch Variable nicht zugewiesen

TobiboT

Cadet 1st Year
Registriert
Aug. 2016
Beiträge
9
Hey :)
Ich programmiere seit ca. 2 Wochen C# und bin derzeit am bearbeiten von paar Übungsbeispielen unserer Lehrerin.

Das Programm soll Werte einlesen, paar Matheoperationen durchführen und das dann alles ausgeben.
ich wollte jetzt noch try-catch hinzufügen, um Buchstaben-Eingaben abzufangen und habe den Teil, wo die Werte aus den TextBoxen ausgelesen und zugewiesen werden, umklammert.

Code:
int normVerbr, aktVerbr;
            double flugzeit, abwVerbr, prozent;
            string MehrWeniger;

            try
            {
                normVerbr = Convert.ToInt32(tbVerbrauch.Text);
                aktVerbr = Convert.ToInt32(tbLiter.Text);
                flugzeit = Convert.ToDouble(tbZeit.Text);
            }
            catch { MessageBox.Show("Überprüfe deine Eingabe - Etwas ist falsch gelaufen...", "Ups!"); }
                    

            abwVerbr = normVerbr - (aktVerbr / flugzeit);
            prozent = Math.Round(100 - (abwVerbr * 100) / normVerbr, 2);

Allerdings werden dann alle zugewiesenen Variablen unter dem try block von Visual Studio rot unterstrichen und es wird anscheinend kein Wert erkannt.
Woran liegt das, was habe ich falsch gemacht? Bitte habt Verständnis - Ich bin Neuling :P
Danke, Tobi
 
Initialisiere deine Variablen mit 0, weise den Variablen im catch Werte zu oder brich die Verarbeitung im catch-block ab.
Wenn das try schief geht will er ja mit Variablen rechnen, die nie einen Wert zugewiesen bekommen haben.
 
Danke für die Antwort :)
Ich habe das jetzt so gelöst:
int normVerbr = 0, aktVerbr = 0;
double flugzeit = 0, abwVerbr, prozent;
string MehrWeniger;
also gleich am Anfang die problemvariablen mit 0 besetzt.

Nur aus Interesse; wie meinst du das mit im Catch block abbrechen? Man will ja dazulernen ;)
 
Wozu noch berechnen wenn die Eingabe fehlerhaft ist? Kommt dann ja nur Müll raus.
Wenn du in einer eigenen Funktion bist kannst du diese ja mit return; vorzeitig verlassen.
 
Das Vorbelegen mit 0 ist hier auch nicht unbedingt sinnvoll, da du im Fehlerfall eine Division durch 0 durchführst. Du solltest die Verarbeitung komplett abbrechen ;).
 
Zurück
Oben