Исключения. Анализ содержимого исключений
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();
}
Дополнительные сведения см. в разделе "Исключения: освобождение объектов в исключениях и исключениях: перехват и удаление исключений".
См. также
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по