Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Exception-Handling.

Ähnliche Präsentationen


Präsentation zum Thema: "Exception-Handling."—  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)
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); 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.

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."

Ähnliche Präsentationen


Google-Anzeigen