Compartilhar via


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" );
   }
}
  

Consulte também

Outros recursos

Tratamento de Exceção (Extensões de Componentes C++)