Поделиться через


наконец

Помимо предложений try и catch, обработка исключений CLR поддерживает предложение finally. Семантика идентична блоку __finally в структурированной обработке исключений (SEH). Блок __finally может следовать за блоком try или блоком catch.

Замечания

Целью finally блока является очистка всех ресурсов, оставшихся после возникновения исключения. Обратите внимание, что finally блок всегда выполняется, даже если исключение не было вызвано. Блок catch выполняется только в том случае, если управляемое исключение создается в связанном try блоке.

finally — это контекстно-зависимое ключевое слово; дополнительные сведения см. Контекстно-зависимые ключевые слова.

Пример

В следующем примере показан простой 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

См. также

Обработка исключений