Por fim
Além de try e cláusulas de catch , a manipulação de exceção de CLR oferece suporte a uma cláusula de finally . A semântica é idêntica ao bloco de __finally a manipulação de exceção estruturado (SEH). Um bloco de __finally pode seguir um bloco de try ou de catch .
Comentários
O propósito do bloco de finally é limpar todos os recursos restantes depois da exceção ocorreu. Observe que o bloco de finally é executado sempre, mesmo se nenhuma exceção foi gerada. O bloco de catch é executado apenas se uma exceção gerenciada é gerada dentro do bloco associado de try .
finally é uma palavra-chave sensível ao contexto; consulte Palavras-chave Contextuais (Extensões de Componentes C++) para obter mais informações.
Exemplo
O exemplo a seguir demonstra um bloco simples de 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" );
}
}