最終的に

try 句と catch 句に加えて、CLR 例外処理では finally 句がサポートされています。 セマンティクスは、構造化例外処理 (SEH) の __finally ブロックと同じです。 __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

関連項目

例外処理