異常な支配マクロ
終了ハンドラーの __try ブロックが正常に終了したかどうかを示します。 関数は、終了ハンドラーの __finally ブロック内からのみ呼び出すことができます。
注意
Microsoft C/C++ 最適化コンパイラは、この関数をキーワードとして解釈し、適切な例外処理構文の外部で使用するとコンパイラ エラーが生成されます。
構文
BOOL AbnormalTermination(void);
パラメーター
このマクロにはパラメーターがありません。
戻り値
__try ブロックが異常終了した場合、戻り値は 0 以外です。
__try ブロックが正常に終了した場合、戻り値は 0 になります。
注釈
__try ブロックは、ブロック内の最後のステートメントを実行した後、実行がブロックから順番に離れる場合にのみ、正常に終了します。 実行が__tryブロックから離れる原因となるステートメント (return、goto、continue、break など) は、ブロックの異常終了を引き起こします。 このようなステートメントが 、__try ブロック内の最後のステートメントである場合でも、これは当てはまりです。
__try ブロックが異常終了すると、システムはすべてのスタック フレームを後方検索して、終了ハンドラーを呼び出す必要があるかどうかを判断します。 これにより、数百の命令が実行される可能性があるため、戻り値、ジャンプステートメント、続行ステートメント、または break ステートメントが原因で__tryブロックが異常終了しないようにすることが重要です。 これらのステートメントは、終了が異常であっても例外を生成しないことに注意してください。
異常終了を回避するには、ブロックの最後まで実行を続行する必要があります。 __leave ステートメントを実行することもできます。 __leave ステートメントを使用すると、異常終了とそのパフォーマンスの低下を引き起こさずに、__try ブロックを即時に終了できます。 __leave ステートメントがサポートされているかどうかを確認するには、コンパイラのドキュメントを確認してください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント |
Windows XP [デスクトップ アプリのみ] |
サポートされている最小のサーバー |
Windows Server 2003 [デスクトップ アプリのみ] |