finally
Zusätzlich zu try
und catch
Klauseln unterstützt die CLR-Ausnahmebehandlung eine finally
Klausel. Die Semantik ist identisch mit dem Block in der __finally
strukturierten Ausnahmebehandlung (SEH). Ein __finally
Block kann einem oder catch
einem try
Block folgen.
Hinweise
Der Zweck des finally
Blocks besteht darin, alle Ressourcen zu bereinigen, die nach dem Auftreten der Ausnahme verbleiben. Beachten Sie, dass der finally
Block immer ausgeführt wird, auch wenn keine Ausnahme ausgelöst wurde. Der catch
Block wird nur ausgeführt, wenn eine verwaltete Ausnahme innerhalb des zugeordneten try
Blocks ausgelöst wird.
finally
ist ein kontextabhängiges Schlüsselwort; weitere Informationen finden Sie unter Kontextsensible Schlüsselwörter .
Beispiel
Im folgenden Beispiel wird ein einfacher finally
Block veranschaulicht:
// keyword__finally.cpp
// compile with: /clr
using namespace System;
ref class MyException: public System::Exception{};
void ThrowMyException() {
throw gcnew MyException;
}
int main() {
try {
ThrowMyException();
}
catch ( MyException^ e ) {
Console::WriteLine( "in catch" );
Console::WriteLine( e->GetType() );
}
finally {
Console::WriteLine( "in finally" );
}
}
in catch
MyException
in finally