try-finally (C#-Referenz)
Aktualisiert: November 2007
Der finally-Block gibt alle Ressourcen frei, die im try-Block reserviert wurden, und führt den Code aus, der trotz Eintreten einer Ausnahme ausgeführt werden soll. Die Steuerung wird immer an den finally-Block übergeben, unabhängig davon, wie der try-Block beendet wird.
Während mithilfe von catch Ausnahmen behandelt werden, die in einem Anweisungsblock auftreten, wird mithilfe von finally sichergestellt, dass ein Anweisungscodeblock ausgeführt wird, unabhängig davon, wie der vorherige try-Block verlassen wird.
Beispiel
In diesem Beispiel ist eine unzulässige Konvertierungsanweisung enthalten, durch die eine Ausnahme verursacht wird. Wenn Sie das Programm ausführen, wird eine Laufzeitfehlermeldung angezeigt. Die finally-Klausel wird aber trotzdem ausgeführt und zeigt die Ausgabe an.
public class ThrowTest
{
static void Main()
{
int i = 123;
string s = "Some string";
object o = s;
try
{
// Invalid conversion; o contains a string not an int
i = (int)o;
}
finally
{
Console.Write("i = {0}", i);
}
}
}
Durch das oben aufgeführte Beispiel wird System.InvalidCastException ausgelöst.
Obwohl eine Ausnahme abgefangen wurde, wird die Ausgabeanweisung im finally-Block trotzdem ausgeführt, d. h.:
i = 123
Weitere Informationen über finally finden Sie unter try-catch-finally.
C# bietet auch die using-Anweisung, die eine bequeme Syntax für genau dieselbe Funktionalität wie eine try-finally-Anweisung darstellt.
C#-Programmiersprachenspezifikation
Weitere Informationen finden Sie in den folgenden Abschnitten von C#-Programmiersprachenspezifikation:
5.3.3.14 Try-finally-Anweisungen
8.11 Die try-Anweisung
16 Ausnahmen
Siehe auch
Aufgaben
Gewusst wie: Explizites Auslösen von Ausnahmen
Konzepte
Referenz
The try, catch, and throw Statements
Ausnahmebehandlungsanweisungen (C#-Referenz)