Structured Exception Handling
例外は、プログラムの実行中に発生するイベントであり、通常の制御フローの外部でコードを実行する必要があります。 例外には、ハードウェア例外とソフトウェア例外の 2 種類があります。 ハードウェア例外 は CPU によって開始されます。 これらは、0 による除算や無効なメモリ アドレスへのアクセスの試みなど、特定の命令シーケンスの実行によって発生する可能性があります。 ソフトウェア例外 は、アプリケーションまたはオペレーティング システムによって明示的に開始されます。 たとえば、無効なパラメーター値が指定されたときにシステムで検出できます。
構造化例外処理 は、ハードウェア例外とソフトウェア例外の両方を処理するためのメカニズムです。 そのため、コードはハードウェアとソフトウェアの例外を同じように処理します。 構造化例外処理により、例外の処理を完全に制御でき、デバッガのサポートが提供され、すべてのプログラミング言語とマシンで使用できます。 ベクター例外処理 は、構造化例外処理の拡張機能です。
また、システムでは終了処理もサポートされています。これにより、保護されたコード本体が実行されるたびに、指定された終了コード ブロックも確実に実行されます。 終了コードは、制御フローが保護された本体からどのように出るかに関係なく実行されます。 たとえば、終了ハンドラーは、保護されたコード本体の実行中に例外またはその他のエラーが発生した場合でも、クリーンアップ タスクが実行されることを保証できます。