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