構造化例外処理 (C++)
Windows 95Windows 98および Windows 2000 (以前は Windows NT) のサポートは例外処理に信頼性の高い方法オペレーティング システムの協調を含むがを呼び出してまたはプログラミング言語で直接サポートは構造化例外処理を示します。
文法
try ステートメントを除外 :
__try の 複合ステートメント
__except () 式 の 複合ステートメント
解説
予期しない例外は通常どおりに実行またはプロセスの機能を破棄するイベントです。例外はハードウェアとソフトウェアの両方によって確認できます。ハードウェア例外は分割と数値型のオーバーフローが含まれています。ソフトウェアの例外は検出しシステムはWindows によって検出された RaiseException の関数と特殊な状況を呼び出すことでそれらを通知します。
構造化例外処理を使用して信頼できるコードを記述できます。リソースがメモリ ブロックおよびファイルなどの予期しない終了の場合正しく閉じることができます。特定の問題はリターン コードの goto のステートメントまたは精巧なテストに依存しない簡単な構成されたコードのメモリ不足など処理できます。
とを除く と try-finally のステートメントはプログラムの制御を取得すると通常アプリケーションが実行を終了するイベントを有効にした C 言語に Microsoft 拡張機能です。
[!メモ]
構造化例外処理ではC および C++ のソース ファイルを使用します。ただしC++ 向けに設計されていません。/EHsc(.) を使用して C ++ プログラムで構造化例外処理を使用してローカル オブジェクトのデストラクターが呼び出されますがコードで C++ 例外処理を使用して汎用性のあることを確認します。C++ 例外処理 機能は型の例外処理できることよりも柔軟性があります。
2 個の構造化例外処理機構があります :
ハンドラーの二つの型が異なりますが「スタックをアンワインドするというプロセスによって密接に関連付けられます」。例外が発生するとWindows は現在アクティブな最も新しくインストールした例外ハンドラーが検索されます。ハンドラーは次の 3 点の 1 種類を作成できます :
他の例外ハンドラー (エラー) を認識するにコントロールを渡します。
例外を認識しますが閉じます。
例外を認識し処理します。
例外を認識する例外ハンドラーが実行された関数例外が発生したときに生じる可能性があります。場合によってはスタックの関数により高くなる場合があります。スタック フレームの現在実行中の関数関数はすべて終了します。このプロセスではスタックがアンワインドされる」 : 「 静的 場合終了した関数のローカル変数がスタックから削除します。
これがスタックをアンワインドするためオペレーティング システムは各関数に書き込んだ終了ハンドラーが呼び出されます。終了ハンドラーの使用は異常終了して開くに残ったリソースをクリーンアップする可能性があります。クリティカル セクションを入力した場合は終了ハンドラーで終了できます。プログラムがシャットダウンする場合は削除の一時ファイル閉じるなど他のハウスキーピングのタスクが実行されます。
構造化例外処理を使用する C のモジュールがある場合C++ 例外処理を使用する C++ モジュールで使用することができます。例外処理の違い を参照してください。
詳細については、次のトピックを参照してください。