例外処理

プログラムの実行時に、"例外" と呼ばれるさまざまな異常状態やエラーが発生することがあります。例外には、実行時のメモリ不足、リソースの割り当てエラー、ファイル検索のエラーなどがあります。

Microsoft Foundation Class ライブラリでは、ANSI C++ 標準で提唱される異常状態の扱いと同じ例外処理機構を使用します。異常状態に陥る可能性のある関数を呼び出す前に、例外ハンドラーがセットアップされている必要があります。関数で異常状態が発生した場合は、例外がスローされ、制御が例外ハンドラーに移ります。

Microsoft Foundation Class ライブラリには、例外ハンドラーをセットアップするいくつかのマクロが用意されています。ほかにも、必要に応じて特別な例外をスローしプログラムを終了させる補助となる、多くのグローバル関数があります。これらのマクロやグローバル関数は次のカテゴリに分類されます。

  • 例外ハンドラーを組み立てる例外処理マクロ

  • 特定の型の例外を生成する例外スロー関数

  • プログラムを終了させる終了関数

例外処理の例や詳細については、「例外処理 (MFC)」を参照してください。

例外処理マクロ

TRY

例外処理をするコード ブロックを指定します。

CATCH

TRY ブロックでの例外をキャッチするためのコード ブロックを指定します。

CATCH_ALL

TRY ブロックでのすべての例外をキャッチするためのコード ブロックを指定します。

AND_CATCH

TRY ブロックでの付加的な例外をキャッチするためのコード ブロックを指定します。

AND_CATCH_ALL

TRY ブロックでのすべての付加的な例外をキャッチするためのコード ブロックを指定します。

END_CATCH

直前の CATCH または AND_CATCH ブロックの終わりを示します。

END_CATCH_ALL

直前の CATCH_ALL ブロックの終わりを示します。

THROW

指定された例外をスローします。

THROW_LAST

現在処理されている例外を 1 つ外側のハンドラーにスローします。

例外スロー関数

AfxThrowArchiveException

アーカイブの例外をスローします。

AfxThrowFileException

ファイルの例外をスローします。

AfxThrowMemoryException

メモリの例外をスローします。

AfxThrowNotSupportedException

サポートしていない機能にアクセスしたときの例外をスローします。

AfxThrowResourceException

Windows のリソースが見つからないときの例外をスローします。

AfxThrowUserException

ユーザーが起動したプログラムの動作での例外をスローします。

MFC ライブラリには、OLE 例外専用の 2 つの例外スロー関数が用意されています。

OLE 例外関数

AfxThrowOleDispatchException

OLE オートメーション関数内の例外をスローします。

AfxThrowOleException

OLE の例外をスローします。

データベースの例外をサポートするため、データベース クラスには 2 つの例外処理クラス CDBExceptionCDaoException、およびこの例外クラス型をサポートするグローバル関数が用意されています。

DAO 例外関数

AfxThrowDAOException

独自に作成したコードから CDaoException をスローします。

AfxThrowDBException

独自に作成したコードから CDBException をスローします。

MFC に用意されている終了関数を次に示します。

終了関数

AfxAbort

致命的なエラーが発生したときに、アプリケーションの実行を終了するために呼び出されます。

参照

関連項目

CException クラス

概念

MFC マクロとグローバル