Obsługa wyjątków w MFC

W tym artykule wyjaśniono, dostępne w bibliotece MFC mechanizmów obsługi wyjątków.Dostępne są dwa mechanizmy:

  • Wyjątki C++, dostępna w MFC w wersji 3.0 i nowsze

  • Makra wyjątek MFC, dostępne w wersjach MFC 1.0 i nowsze

Jeśli piszesz nowej aplikacji przy użyciu biblioteki MFC, należy użyć mechanizmu C++.Jeśli już istniejącej aplikacji intensywnie używa tego mechanizmu, można wykorzystać mechanizm oparte na makrze.

Można łatwo przekonwertować istniejącego kodu, aby użyć zamiast makra wyjątek MFC C++ wyjątki.Zalety konwertowanie swój kod i wytycznych w tym zakresie są opisane w artykule Wyjątki: konwertowanie z makr wyjątków MFC.

Jeśli został już utworzony aplikacji przy użyciu makr wyjątek MFC, możesz kontynuować korzystanie tych makr w istniejącego kodu, podczas korzystania z języka C++ wyjątki w nowy kod.Artykuł Wyjątki: zmiany w makrach wyjątków w wersji 3.0 daje wytycznych w tym zakresie.

[!UWAGA]

Aby włączyć C++ obsługi wyjątków w kodzie, wybierz opcję Włącz wyjątki C++ na stronie generowanie kodu w folderze C/C++ projektu Strony właściwości (Visual C++) okno dialogowe lub użyj opcji kompilatora /GX.Wartością domyślną jest /GX–, co spowoduje wyłączenie obsługi wyjątków.

W tym artykule omówiono następujące tematy:

  • Kiedy należy używać wyjątków

  • Obsługa wyjątków MFC

  • Warto przeczytać temat wyjątków

Kiedy należy używać wyjątków

Trzy rodzaje wyników może wystąpić, gdy funkcja jest wywoływana podczas wykonywania programu: normalnego wykonywania, wykonanie błędne lub nieprawidłowe wykonanie.Każda kategoria jest opisana poniżej.

  • Normalne wykonanie

    Funkcja może działać normalnie i zwracać.Niektóre funkcje zwracają kod wyniku do obiektu wywołującego, który wskazuje wynik funkcji.Kody wyników możliwe są ściśle określone dla funkcji i reprezentuje zakres możliwych wyników funkcji.Kod wyniku można wskazać sukces lub Niepowodzenie lub nawet można wskazać określonego typu awarii, która mieści się w normalnym zakresie oczekiwania.Na przykład funkcja stan pliku można zwrócić kod, który wskazuje, że plik nie istnieje.Należy zauważyć, że pojęcie "Kod błędu" nie jest używana, ponieważ kod wyniku reprezentuje jedną z wielu oczekiwanych wyników.

  • Błędne wykonanie

    Obiekt wywołujący sprawia, że jakiś błąd w przekazywania argumentów do funkcji lub wywołuje funkcję w kontekście niewłaściwe.Sytuacja ta powoduje błąd, a powinna zostać wykryta poprzez podanie w trakcie rozwoju programu. (Aby uzyskać więcej informacji dotyczących potwierdzeń, zobacz Potwierdzenia C/C++.)

  • Nieprawidłowe wykonanie

    Nieprawidłowe wykonanie obejmuje sytuacje, w których warunki poza kontrolą programu, takich jak brak pamięci lub błędy We/Wy, mają wpływ na wynik funkcji.Sytuacji anormalnych powinny być traktowane przez połowu i generowania wyjątków.

Za pomocą wyjątków jest szczególnie odpowiednia dla nieprawidłowe wykonanie.

Obsługa wyjątków MFC

Czy użyć bezpośrednio wyjątki C++ lub korzystać z makr wyjątek MFC, będziesz korzystać z Klasa CException lub CException-pochodzących z obiektów, które może zostać wygenerowany przez architekturę lub przez aplikację.

W poniższej tabeli przedstawiono wstępnie zdefiniowane wyjątki świadczone przez MFC.

Klasa wyjątków

Znaczenie

Klasa CMemoryException

Braku pamięci

Klasa CFileException

Wyjątek plików

Klasa CArchiveException

Archiwum/serializacji wyjątek

Klasa CNotSupportedException

Odpowiedź na żądanie usługi nieobsługiwane

Klasa CResourceException

Wyjątek alokacji zasobów systemu Windows

Klasa CDaoException

Wyjątki bazy danych (DAO klasy)

Klasa CDBException

Wyjątki bazy danych (ODBC klasy)

Klasa COleException

Wyjątki OLE

Klasa COleDispatchException

Wyjątki wysyłki (automation)

Klasa CUserException

Wyjątek, który ostrzega użytkownika z okna komunikatu, a następnie generuje rodzajowegoKlasa CException

[!UWAGA]

MFC obsługuje wyjątki C++ i makra wyjątek MFC.MFC nie obsługuje bezpośrednio obsługi wyjątków systemu Windows NT strukturę (strukturalnej), omówionego w Strukturalnej obsługi wyjątków.

Warto przeczytać temat wyjątków

Następujące artykuły wyjaśnić, przy użyciu biblioteki MFC, za wyjątkiem:

Następujące artykuły porównać makra wyjątek MFC z wyjątku słów kluczowych języka C++ i wyjaśnić, jak można dostosować swój kod:

Zobacz też

Informacje

Obsługa wyjątków języka C++

Inne zasoby

Jak: utworzyć mój własny klas wyjątków niestandardowe?