例外処理 : 例外の内容の調査

catch ブロックの引数はほぼすべてのデータ型にすることができますが、MFC 関数は CException クラスから派生した型の例外をスローします。 MFC 関数によってスローされた例外をキャッチするには、引数が CException オブジェクトへのポインター (CMemoryException など、CException から派生したオブジェクトなど) である catch ブロックを記述します。 例外の正確な型に応じて、例外オブジェクトのデータ メンバーを調べて、例外の特定の原因に関する情報を収集できます。

たとえば、CFileException 型には m_cause データ メンバーが含まれており、ファイル例外の原因を指定する列挙型が含まれているとします。 可能な戻り値の例として、CFileException::fileNotFoundCFileException::readOnly があります。

次の例で、CFileException の内容を調べる方法を示します。 その他の例外の種類も同様に調べることができます。

try
{
   CFile file(_T("\\this_file_should_not_exist.dat"), CFile::modeRead);
}
catch (CFileException* theException)
{
   if (theException->m_cause == CFileException::fileNotFound)
      TRACE("File not found\n");
   theException->Delete();
}

詳細については、「例外処理 : 例外処理でのオブジェクトの解放」と「例外処理 : 例外のキャッチと削除」を参照してください。

関連項目

例外処理