例外処理 : 例外の内容の調査
catch
ブロックの引数はほぼすべてのデータ型にすることができますが、MFC 関数は CException
クラスから派生した型の例外をスローします。 MFC 関数によってスローされた例外をキャッチするには、引数が CException
オブジェクトへのポインター (CMemoryException
など、CException
から派生したオブジェクトなど) である catch
ブロックを記述します。 例外の正確な型に応じて、例外オブジェクトのデータ メンバーを調べて、例外の特定の原因に関する情報を収集できます。
たとえば、CFileException
型には m_cause
データ メンバーが含まれており、ファイル例外の原因を指定する列挙型が含まれているとします。 可能な戻り値の例として、CFileException::fileNotFound
と CFileException::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();
}
詳細については、「例外処理 : 例外処理でのオブジェクトの解放」と「例外処理 : 例外のキャッチと削除」を参照してください。