Untersuchen von Ausnahmen und der Verwendung von Ausnahmen
- 6 Minuten
An früherer Stelle in diesem Modul haben Sie gelernt, dass Laufzeitfehler in C# als Ausnahmen bezeichnet werden, und dass Sie sie „abfangen“ müssen, bevor sie Ihre Anwendung zum Absturz bringen. Wirklich? Das Abfangen von Ausnahmen vor dem Absturz Ihrer Anwendung klingt eher nach einem Videospiel als nach dem Schreiben einer Anwendung. Was genau bedeutet es, eine Ausnahme „abzufangen“? Zur Beantwortung dieser Frage müssen Sie sich zunächst einmal genauer ansehen, was eine Ausnahme ist.
Was sind Ausnahmen?
Nachfolgend finden Sie eine formalere Definition, die beschreibt, was eine Ausnahme ist und wie sie in einer C#-Anwendung verwendet wird:
In C# werden Programmfehler zur Laufzeit über einen besonderen Mechanismus durch das Programm weitergegeben, die sogenannten „Ausnahmen“. Ausnahmen werden von Code ausgelöst, der auf einen Fehler stößt. Sie werden von Code abgefangen, der den Fehler beheben kann. Ausnahmen können durch die .NET-Runtime oder durch Code in einem Programm ausgelöst werden. Ausnahmen werden durch Klassen repräsentiert, die von Exception (engl. für „Ausnahme“) abgeleitet sind. Jede Klasse identifiziert den Typ der Ausnahme und umfasst Eigenschaften, die Details zur Ausnahme bereitstellen.
Wichtig
Für diese Schulung sind keine umfassenden Kenntnisse der .NET-Klassen erforderlich. Möglicherweise ist diese Definition zunächst etwas verwirrend, aber keine Sorge. Sie können Ausnahmen auch ohne umfassende Kenntnisse zu Klassen in Ihrem Code verwenden.
Die Microsoft-Dokumentation zu Ausnahmen ist sehr ausführlich. Diese Definition liefert jedoch alle Informationen, die Sie im Augenblick benötigen. Insbesondere zwei Aspekte sind wichtig:
- Sie müssen verstehen, was Ausnahmen sind.
- Sie müssen verstehen, wie Sie Ausnahmen in Ihren Anwendungen verwenden.
Sie können sich eine Ausnahme als Variable mit zusätzlichen Funktionen vorstellen. Sie können mit Ausnahmen die gleichen Aufgaben wie mit Variablen ausführen, z. B.:
- Sie können verschiedene Arten von Ausnahmen erstellen.
- Sie können auf den Inhalt einer Ausnahme zugreifen.
Was bedeutet es, eine Ausnahme „auszulösen“ und „abzufangen“?
Die Begriffe „auslösen“ und „abfangen“ lassen sich durch die Auswertung der obigen Definition einer Ausnahme erklären.
Im zweiten Satz der Definition heißt es: „Ausnahmen werden durch Code ausgelöst, der auf einen Fehler stößt, und durch Code abgefangen, der den Fehler korrigieren kann.“ Weiterhin erfahren Sie, dass Ausnahmen von der .NET-Runtime erzeugt werden, wenn ein Fehler in Ihrem Code auftritt. Im zweiten Teil des oben zitierten Satzes erfahren Sie, dass Sie Code schreiben können, um eine ausgelöste Ausnahme abzufangen. Zudem kann der zum Abfangen der Ausnahme verwendete Code auch zum Durchführen einer Korrekturmaßnahme genutzt werden. So kann im Idealfall die Situation entschärft werden, die durch den fehlerverursachenden Code entstanden ist. Anders ausgedrückt: Sie können Code schreiben, der Ihre Anwendung im Falle eines Fehlers schützt.
Nach der Auswertung dieses zweiten Satzes der Definition wissen Sie Folgendes:
- Eine Ausnahme wird zur Laufzeit erstellt, wenn ihr Code einen Fehler erzeugt.
- Die Ausnahme kann wie eine Variable behandelt werden, die über einige zusätzliche Funktionen verfügt.
- Sie können Code schreiben, der auf die Ausnahme zugreift und Korrekturmaßnahmen durchführt.
Im verbleibenden Teil der Definition erfahren Sie, dass die .NET-Runtime eine Ausnahme generiert, wenn sie einen Fehler feststellt. Die generierte Ausnahme enthält Informationen zum aufgetretenen Fehler. Ihr Code kann eine Ausnahme abfangen und das Problem mithilfe der in der Ausnahme gespeicherten Informationen beheben.
Zusammenfassung
Nachstehend finden Sie nochmals die wichtigsten Punkte aus dieser Lerneinheit:
- In C# dienen Ausnahmen dazu, während der Laufzeit Fehler weiterzugeben, und sie werden durch von der
Exception-Klasse abgeleitete Klassen repräsentiert. - Ausnahmen werden von Code ausgelöst, der auf einen Fehler stößt. Sie werden von Code abgefangen, der den Fehler beheben kann.
- Wenn eine Ausnahme abgefangen wird, kann der Code auf ihren Inhalt zugreifen und Korrekturmaßnahmen zum Entschärfen des Fehlers ergreifen.
- Die .NET-Runtime generiert Ausnahmen, wenn sie einen Fehler erkennt, und die Ausnahme enthält Informationen zum Typ des aufgetretenen Fehlers.