次の方法で共有


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

更新 : 2007 年 11 月

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

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

参照

概念

例外処理 (MFC)