schule:fehlerbehandlung
Fehlerbehandlung
Während eines Programmablaufes können Fehler auftreten – sogenannte Ausnahmen (engl. exceptions). Vergleiche auch Kapitel 7.1 aus Visual C# 2012.
Wenn eine Anweisung läuft und etwas schief geht, wirft ein Methodenaufruf eine Exception an den Aufrufer. Lasse den folgenden Quelltext laufen und versuche eine Exception auszulösen.
int iEingangA; int iEingangB; string nutzereingabe; Console.WriteLine("Bitte geben Sie den Wert für Eingang A an:"); nutzereingabe = Console.ReadLine(); iEingangA = Convert.ToInt32(nutzereingabe); Console.WriteLine("Bitte geben Sie den Wert für Eingang B an:"); nutzereingabe = Console.ReadLine(); iEingangB = Convert.ToInt32(nutzereingabe);
Wenn eine Exception aufgetreten ist (man sagt, sie wurde „geworfen“), kann sie behandelt werden, indem man sie auffängt. Dies geschieht mit einem try-catch
-Block. Versuche mit Hilfe eines Debuggers den folgenden Quelltext schrittweise nachzuvollziehen.
// In welcher Reihenfolge werden die folgenden Zeilen ausgeführt? // Kontrollieren Sie ihre Angabe mit dem Debugger. // Welche Ausgabe wurde erzeugt? double d = 0; try { d = Convert.ToDouble("Fünundzwanzig"); d = d * 2; } catch (FormatException ex) { Console.WriteLine("Im Catch-Block: " + ex.Message); } Console.WriteLine("d= " + d);
Und noch ein weiteres Beispiel.
// In welcher Reihenfolge werden die folgenden Zeilen ausgeführt? // Kontrollieren Sie ihre Angabe mit dem Debugger. // Welche Ausgabe wurde erzeugt? double d = 0; try { d = Convert.ToDouble("25"); d = d * 2; } catch (FormatException ex) { Console.WriteLine("Im Catch-Block: " + ex.Message); } Console.WriteLine("d= " + d);
Schließlich ein drittes Beispiel mit mehreren catch
-Blöcken. Hier können Fehler nach ihrer Art unterschieden werden.
// In welcher Reihenfolge werden die folgenden Zeilen ausgeführt? // Kontrollieren Sie ihre Angabe mit dem Debugger. // Welche Ausgabe wurde erzeugt? double d = 0; try { d = Convert.ToDouble("25"); d = d * 2; } catch (FormatException ex) { Console.WriteLine("Im Catch-Block"); } catch (System.Net.Mail.SmtpException) { Console.WriteLine("Im Catch-Block der SMTP Exception"); } Console.WriteLine("d= " + d);
schule/fehlerbehandlung.txt · Zuletzt geändert: 2017-04-19 08:39 von 127.0.0.1