終了処理
終了ハンドラーは、制御フローが特定の保護されたコード本体を離れるたびに、コードの特定のブロックが実行されるようにします。 終了ハンドラは次の要素で構成されます。
- コードの保護された本文
- 制御フローが保護された本体から離れたときに実行される終了コードのブロック
終了ハンドラーは、言語固有の構文で宣言されます。 Microsoft C/C++ 最適化コンパイラを使用して、__try と __finally を使用して実装します。 詳細については、「ハンドラー構文」を参照してください。
保護されたコード本体は、コードのブロック、ネストされたブロックのセット、またはプロシージャまたは関数全体の場合があります。 保護された本文が実行されるたびに、終了コードのブロックが実行されます。 唯一の例外は、保護された本文の実行中にスレッドが終了する場合です (たとえば、ExitThread または ExitProcess 関数が保護された本文内から呼び出された場合)。
終了ブロックは、保護された本体が正常に終了したか異常に終了したかに関係なく、制御のフローが保護された本体から離れるときに実行されます。 ブロック内の最後のステートメントが実行されると、ガードされた本体は正常に終了したとみなされ、制御は終了ブロックに順次進みます。 異常終了は、例外、または制御ステートメント (return、goto、break、または continue) が原因で、制御フローが保護された本体から離れた場合に発生します。 AbnormalTermination 関数は、終了ブロック内から呼び出して、保護された本体が正常に終了したかどうかを判断できます。