finally
Oprócz try
klauzul i catch
obsługa wyjątków CLR obsługuje klauzulę finally
. Semantyka jest identyczna z blokiem __finally
w obsłudze wyjątków strukturalnych (SEH). Blok __finally
może podążać za blokiem try
lub catch
.
Uwagi
finally
Celem bloku jest wyczyszczenie wszelkich zasobów pozostałych po wystąpieniu wyjątku. Należy pamiętać, że finally
blok jest zawsze wykonywany, nawet jeśli nie zgłoszono wyjątku. Blok catch
jest wykonywany tylko wtedy, gdy w skojarzonym try
bloku jest zgłaszany wyjątek zarządzany.
finally
jest kontekstowym słowem kluczowym; Aby uzyskać więcej informacji, zobacz Kontekstowe słowa kluczowe .
Przykład
W poniższym przykładzie pokazano prosty finally
blok:
// 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