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