異常な支配マクロ

終了ハンドラーの __try ブロックが正常に終了したかどうかを示します。 関数は、終了ハンドラーの __finally ブロック内からのみ呼び出すことができます。

注意

Microsoft C/C++ 最適化コンパイラは、この関数をキーワードとして解釈し、適切な例外処理構文の外部で使用するとコンパイラ エラーが生成されます。

構文

BOOL AbnormalTermination(void);

パラメーター

このマクロにはパラメーターがありません。

戻り値

__try ブロックが異常終了した場合、戻り値は 0 以外です。

__try ブロックが正常に終了した場合、戻り値は 0 になります。

注釈

__try ブロックは、ブロック内の最後のステートメントを実行した後、実行がブロックから順番に離れる場合にのみ、正常に終了します。 実行が__tryブロックから離れる原因となるステートメント (returngotocontinuebreak など) は、ブロックの異常終了を引き起こします。 このようなステートメントが 、__try ブロック内の最後のステートメントである場合でも、これは当てはまりです。

__try ブロックが異常終了すると、システムはすべてのスタック フレームを後方検索して、終了ハンドラーを呼び出す必要があるかどうかを判断します。 これにより、数百の命令が実行される可能性があるため、戻り値、ジャンプステートメント、続行ステートメント、または break ステートメントが原因で__tryブロックが異常終了しないようにすることが重要です。 これらのステートメントは、終了が異常であっても例外を生成しないことに注意してください。

異常終了を回避するには、ブロックの最後まで実行を続行する必要があります。 __leave ステートメントを実行することもできます。 __leave ステートメントを使用すると、異常終了とそのパフォーマンスの低下を引き起こさずに、__try ブロックを即時に終了できます。 __leave ステートメントがサポートされているかどうかを確認するには、コンパイラのドキュメントを確認してください。

要件

要件
サポートされている最小のクライアント
Windows XP [デスクトップ アプリのみ]
サポートされている最小のサーバー
Windows Server 2003 [デスクトップ アプリのみ]

こちらもご覧ください

構造化例外処理関数

構造化例外処理の概要