終了ハンドラーに関する制約
goto
ステートメントを使用して、__try
ステートメント ブロックまたは __finally
ステートメント ブロックにジャンプすることはできません。 代わりに、制御の標準フローに従ってステートメント ブロックに入る必要があります。 (ただし、ステートメント ブロックから飛び出 __try
すことができます)。また、例外ハンドラーまたは終了ハンドラーをブロック内に入れ子に __finally
することはできません。
終端ハンドラーに割り当てられた一部の種類のコードが生成する結果に問題がある場合があります。したがって、これらは慎重に使用する必要があります。 1 つは、__finally
ステートメント ブロックの外部にジャンプする goto
ステートメントです。 ブロックが正常終了の一部として実行される場合、特に異常は発生しません。 ただし、システムがスタックをアンワインドしている場合、そのアンワインドは停止します。 その後、現在の関数は、異常終了が発生した場合と同様に制御を取得します。
__finally
ステートメント ブロック内の return
ステートメントが、同じ状況を大まかに示します。 終了ハンドラーを含む関数の直前の呼び出し元に制御が戻ります。 システムがスタックをアンワインドしている場合、このプロセスは停止します。 その後、例外が発生した場合と同様にプログラムが続行されます。
関連項目
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示