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

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();
}

詳細については、「例外 : 例外の解放」 と「例外」を参照してください。例外の キャッチと削除

関連項目

例外処理