finally
Oltre alle try
clausole e catch
, la gestione delle eccezioni CLR supporta una finally
clausola . La semantica è identica al __finally
blocco nella gestione delle eccezioni strutturata (SEH). Un __finally
blocco può seguire un try
blocco o catch
.
Osservazioni:
Lo scopo del finally
blocco è pulire tutte le risorse lasciate dopo che si è verificata l'eccezione. Si noti che il finally
blocco viene sempre eseguito, anche se non è stata generata alcuna eccezione. Il catch
blocco viene eseguito solo se viene generata un'eccezione gestita all'interno del blocco associato try
.
finally
è una parola chiave sensibile al contesto; Per altre informazioni, vedere Parole chiave sensibili al contesto.
Esempio
L'esempio seguente illustra un blocco semplice finally
:
// 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