次の方法で共有


Finally

try と catch 句に加えて、CLR の例外処理は finally 句をサポートします。 セマンティクスは構造化例外処理 (SEH) の __finally ブロックと同じです。 __finally ブロックは try または catch ブロックに進むことができます。

解説

finally ブロックの目的は、発生した例外の後に残っているリソースをクリーンアップすることです。 例外がスローされなくてが finally ブロックが必ず実行されることに注意してください。 catch ブロックはマネージ例外が try 関連のブロック内でスローされれば場合にのみ実行されます。

finally は状況依存のキーワードです。詳細については、「状況依存のキーワード (C++ コンポーネント拡張)」を参照してください。

使用例

次の例では 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" );
   }
}
  

参照

その他の技術情報

例外処理 (C++ コンポーネント拡張)