finally

Além das cláusulas try e catch, o tratamento de exceção de CLR dá suporte a uma cláusula finally. A semântica é idêntica ao bloco __finally no SEH (tratamento de exceção estruturado). Um bloco __finally pode seguir um bloqueio try ou catch.

Comentários

A finalidade do bloco finally é limpar todos os recursos deixados após a exceção. Observe que o bloco finally sempre é executado, mesmo que nenhuma exceção tenha sido gerada. O bloco catch só será executado se uma exceção gerenciada for lançada dentro do bloco try associado.

finally é uma palavra-chave contextual; veja mais em Palavras-chave contextuais.

Exemplo

O exemplo a seguir demonstra um bloco finally simples:

// 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

Confira também

Tratamento de exceção