Поделиться через


Исключения. Анализ содержимого исключений

catch Хотя аргумент блока может быть практически любым типом данных, функции MFC создают исключения типов, производных от классаCException. Для перехвата исключения, вызываемого функцией MFC, необходимо написать catch блок, аргумент которого является указателем на CException объект (или объект, производный от CException, например CMemoryException). В зависимости от точного типа исключения можно изучить элементы данных объекта исключения, чтобы собрать сведения о конкретной причине исключения.

Например, 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();
}

Дополнительные сведения см. в разделе "Исключения: освобождение объектов в исключениях и исключениях: перехват и удаление исключений".

См. также

Обработка исключений