Ausnahmen und Ausnahmebehandlung (C#-Programmierhandbuch)
Die Features zur Ausnahmebehandlung in C# ermöglichen die Reaktion auf unerwartete oder außergewöhnliche Situationen, die bei der Ausführung des Programms auftreten. Bei der Ausnahmebehandlung wird mithilfe der Schlüsselwörter try, catch und finally versucht, Aktionen auszuführen, die möglicherweise fehlschlagen, Fehler zu behandeln und anschließend die Ressourcen zu bereinigen. Ausnahmen können von der Common Language Runtime (CLR), durch Bibliotheken von Drittanbietern oder durch den Anwendungscode mit dem throw-Schlüsselwort generiert werden.
In diesem Beispiel testet eine Methode auf eine Division durch 0 und fängt den Fehler auf. Ohne diese Ausnahmebehandlung würde das Programm mit der Fehlermeldung DivideByZeroException wurde nicht behandelt beendet werden.
int SafeDivision(int x, int y)
{
try
{
return (x / y);
}
catch (System.DivideByZeroException dbz)
{
System.Console.WriteLine("Division by zero attempted!");
return 0;
}
}
Ausnahmen verfügen über folgende Eigenschaften:
-
Wenn in der Anwendung außergewöhnliche Umstände auftreten, z. B. eine Division durch 0 oder eine Warnung wegen unzureichendem Arbeitsspeicher, wird eine Ausnahme generiert.
-
Verwenden Sie einen try-Block um Anweisungen, die möglicherweise Ausnahmen generieren.
-
Sobald eine Ausnahme im try-Block auftritt, springt die Ablaufsteuerung sofort zu einem verknüpften Ausnahmehandler, sofern einer vorhanden ist.
-
Wenn für eine bestimmte Ausnahme kein Ausnahmehandler vorhanden ist, wird die Ausführung des Programms mit einer Fehlermeldung angehalten.
-
Wenn ein catch-Block eine Ausnahmevariable definiert, können Sie damit mehr Informationen über den Typ der Ausnahme erhalten.
-
Aktionen, die möglicherweise zu einer Ausnahme führen, werden mit dem try-Schlüsselwort ausgeführt.
-
Ein Ausnahmehandler ist ein Codeblock, der beim Auftreten einer Ausnahme ausgeführt wird. In C# werden Ausnahmehandler mit dem catch-Schlüsselwort definiert.
-
Ausnahmen können explizit von einem Programm mit dem throw-Schlüsselwort generiert werden.
-
Ausnahmeobjekte enthalten ausführliche Informationen zum Fehler wie den Zustand der Aufrufliste und eine Textbeschreibung des Fehlers.
-
Code in einem finally-Block wird selbst dann ausgeführt, wenn eine Ausnahme ausgelöst wird. Dadurch kann das Programm Ressourcen freigeben.
Weitere Informationen finden Sie in den folgenden Abschnitten von C#-Programmiersprachenspezifikation:
-
8.9.5 Die throw-Anweisung
-
8.10 Die try-Anweisung
-
16 Ausnahmen