Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Exception-Handling. 18.05.20142 18.05.2014 2 Was sind Exceptions? Programmzustände auf Grund unerwarteter Ereignisse (dürfen eigentlich nicht passieren!)

Ähnliche Präsentationen


Präsentation zum Thema: "Exception-Handling. 18.05.20142 18.05.2014 2 Was sind Exceptions? Programmzustände auf Grund unerwarteter Ereignisse (dürfen eigentlich nicht passieren!)"—  Präsentation transkript:

1 Exception-Handling

2 Was sind Exceptions? Programmzustände auf Grund unerwarteter Ereignisse (dürfen eigentlich nicht passieren!) Benutzerverhalten Fehleingaben Systemverhalten Selten vorkommende reguläre Abläufe sind nicht als Ausnahmen zu behandeln Szenarien Über Selektion behandelbar Beispiel Dateiende erreicht Eingabevalidierungen Prinzip: Trennung Nutzcode Fehlerbehandlungscode

3 Früher – Behandlung über Returncodes Rückmeldung der fehlerbehafteten Methode an Aufrufer Boolsche Werte, -1, … Nachteile Aufrufer behandelt Ausnahmen mitten im Standardablauf Eigentlicher Algorithmus wird überlagert Bei vielen Exceptions schwer lesbarer Code Aufrufer kann Ausnahme (Rückgabewert) ignorieren Vogel Strauss-Taktik Exceptions transportieren Fehler samt Informationen direkt von der Stelle des Auftretens zur Behandlungsstelle zurück

4 Verarbeitung von Ausnahmefällen In der.NET Class Library werden in vielen Fällen Exceptions ausgelöst. Beispiele: - Umwandeln von String abc in Zahl (Convert.ToInt32) - Versuch eine Datei zu öffnen die nicht existiert - Division durch 0 Um ein Programmende verhindern zu können, müssen diese Ausnahmefälle behandelt werden. (Natürlich können auch eigene Exceptions ausgelöst werden… dazu später mehr)

5 Was tun, wenn Exception auftritt? Ausnahmesituation bereinigen und Vorgang wiederholen CD/DVD einlegen Neue Benutzereingabe Exception mitloggen und weiter machen Weniger kritische Situationen (Warnings) Exception abfangen und durch eigene Exception (Wrapper) ersetzen Sicherheitsgünde (Infos unterdrücken) An Benutzer angepasste Informationen Exception mit Inner-Exception weiterleiten Benutzer über Ausnahme informieren und Programm beenden

6 Exceptions in C# try…catch…finally

7 Einfache Exceptionbehandlung Szenario: Konto darf um maximal 1000 überzogen werden Zuweisung von auf Saldo löst Exception aus

8 Try – catch - finally

9 Eigene Exceptions erzeugen Normalerweise ApplicationException als Basisklasse Properties sind als Zusatzinfo neben Message möglich

10 Exception-Hierarchie (1) Alle C#-Ausnahmen leiten sich aus der Klasse Exception ab. Wenn eine Ausnahme auftritt, wird der geeignete catch-Block durch einen Abgleich zwischen Typ der Ausnahme und der angegebenen Exception im catch-Block ermittelt. Ein catch-Block mit exakter Übereinstimmung hat hierbei Vorrang vor einer allgemeineren Ausnahme.

11 Exception-Hierarchie (1) class Test { static int Zero = 0; public static void Main() { try { int j = 22 / Zero; } // Spezifische Ausnahme auffangen catch (DivideByZeroException e) { Console.WriteLine("DivideByZero {0}", e); } // Verbleibende Ausnahmen auffangen catch (Exception e) { Console.WriteLine("Exception {0}", e); } Der catch-Block, mit dem die DivideByZeroException aufgefangen wird, stellt die genauere Übereinstimmung dar, daher wird dieser Codeabschnitt ausgeführt.

12 Exception-Hierarchie (2) Wird eine Exception innerhalb einer Methode nicht abgefangen, wird die Exception an die aufrufende Methode weitergereicht. Wenn eine Exception auch in der obersten Ebene (Main Methode) nicht abgefangen wird, so wird das Programm beendet!

13 Exception-Hierarchie (2) Bei Ausführung der Division wird eine Exception erzeugt. Die Laufzeitumgebung sucht nach einem try-Block in AFunction(), findet jedoch keinen try-Block, daher springt sie aus AFunction() und sucht in Main() nach einem try-Block. Hier ist ein try-Block vorhanden, also wird nach einem entsprechenden catch-Block gesucht. Anschließend wird der catch- Block ausgeführt. class Test { static int Zero = 0; static void AFunction() { int j = 22 / Zero; // Die folgende Zeile wird nie ausgef ü hrt. Console.WriteLine("In AFunction()"); } public static void Main() { try { AFunction(); } catch (DivideByZeroException e) { Console.WriteLine("DivideByZero {0}", e); }

14 Inner-Exceptions erzeugen Erzeugen über speziellen Konstruktor Property kann zusätzliche Info liefern Amount soll abgehoben werden Exception auffangen und mit eigenen Infos weitergeben

15 Inner-Exceptions auswerten Verarbeiten der Liste von Exceptions

16 Ergebnis

17 Übersicht der Exception-Klassenhierarchie MSDN

18 Properties zum Informationsaustausch

19 Zwei Zentrale Exceptionhandler

20


Herunterladen ppt "Exception-Handling. 18.05.20142 18.05.2014 2 Was sind Exceptions? Programmzustände auf Grund unerwarteter Ereignisse (dürfen eigentlich nicht passieren!)"

Ähnliche Präsentationen


Google-Anzeigen