Wyjątki: badanie zawartości wyjątku
Chociaż argument bloku może być niemal dowolnym typem catch
danych, funkcje MFC zgłaszają wyjątki typów pochodzących z klasy CException
. Aby przechwycić wyjątek zgłaszany przez funkcję MFC, należy napisać catch
blok, którego argument jest wskaźnikiem do CException
obiektu (lub obiektu pochodzącego z CException
elementu , takiego jak CMemoryException
). W zależności od dokładnego typu wyjątku można zbadać składowe danych obiektu wyjątku, aby zebrać informacje o określonej przyczynie wyjątku.
Na przykład CFileException
typ ma m_cause
element członkowski danych, który zawiera wyliczony typ określający przyczynę wyjątku pliku. Niektóre przykłady możliwych wartości zwracanych to CFileException::fileNotFound
i CFileException::readOnly
.
W poniższym przykładzie pokazano, jak zbadać zawartość obiektu CFileException
. Inne typy wyjątków można zbadać podobnie.
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();
}
Aby uzyskać więcej informacji, zobacz Wyjątki: zwalnianie obiektów w wyjątkach i wyjątkach: przechwytywanie i usuwanie wyjątków.