Benutzer-Werkzeuge

Webseiten-Werkzeuge


schule:fehlerbehandlung

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Nächste Überarbeitung
Vorhergehende Überarbeitung
schule:fehlerbehandlung [2015-12-06 19:32] – angelegt marco.bakeraschule:fehlerbehandlung [2017-04-19 08:39] (aktuell) – Externe Bearbeitung 127.0.0.1
Zeile 1: Zeile 1:
 +====== Fehlerbehandlung ======
 +
 +Während eines Programmablaufes können Fehler auftreten -- sogenannte Ausnahmen (engl. //exceptions//). Vergleiche auch [[http://openbook.rheinwerk-verlag.de/visual_csharp_2012/1997_07_001.html|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.
 +
 +<code csharp>
 +            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);
 +</code>
 +
 +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 [[Debugging|Debuggers]] den folgenden Quelltext schrittweise nachzuvollziehen.
 +
 +<code csharp>
 +            // 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);
 +
 +</code>
 +
 +Und noch ein weiteres Beispiel.
 +
 +<code csharp>
 +
 +            // 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);
 +
 +</code>
 +
 +Schließlich ein drittes Beispiel mit mehreren ''catch''-Blöcken. Hier können Fehler nach ihrer Art unterschieden werden.
 +
 +<code csharp>
 +            // 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);
 +</code>