Obsługa wyjątków w MFC
W tym artykule wyjaśniono, dostępne w MFC mechanizmów obsługi wyjątków.Dostępne są dwa mechanizmy:
Wyjątki C++, MFC wersja 3.0 i nowsze
Makra wyjątek MFC MFC wersje 1.0 i później
Jeśli pisania nowej aplikacji przy użyciu MFC, należy użyć mechanizmu C++.Mechanizm oparty makra można użyć, jeśli już istniejąca aplikacja używa mechanizmu wszechstronnie.
Łatwo można przekonwertować istniejący kod używany wyjątki C++ zamiast makra wyjątek MFC.Konwersja kodu i wytycznych w ten sposób korzyści są opisane w artykule Wyjątki: Konwersja z makr wyjątek MFC.
Jeżeli aplikacji przy użyciu makra wyjątek MFC, został już utworzony, możesz kontynuować korzystanie z tych makr w kodzie istniejących w podczas korzystania z wyjątków C++ nowego kodu.Artykuł Wyjątki: Zmiany w makrach wyjątku, w wersji 3.0 daje wskazówki w ten sposób.
[!UWAGA]
Aby włączyć wyjątek C++ obsługi w kodzie, wybierz Włącz wyjątki C++ na stronie generowania kodu w folderze c i C++ projektu Właściwości strony (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 używać wyjątków
Wsparcie MFC
Armator wyjątki — informacje
Kiedy używać wyjątków
Trzy kategorie wyników może wystąpić, gdy funkcja jest wywoływana podczas wykonywania programu: normalne wykonanie, wykonanie błędnej lub nienormalne wykonanie.Poniżej opisano każdej kategorii.
Normalne wykonanie
Funkcja może działać normalnie i zwracać.Niektóre funkcje zwracają kod wyniku do wywołującego, która wskazuje wynik funkcji.Kody wyniku są ściśle określone dla funkcji i reprezentuje zakres możliwych rezultatów funkcji.Kod wyniku może wskazywać sukces lub Niepowodzenie lub nawet można wskazać określonego typu błąd, który jest w normalnym zakresie oczekiwań.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.
Wykonanie błędnej
Obiekt wywołujący sprawia, że niektóre pomyłka przekazywanie argumentów funkcji lub wywołuje funkcję w kontekście niewłaściwe.Sytuacja ta powoduje błąd, i powinna zostać wykryta przez podanie podczas rozwoju programu.(Aby uzyskać więcej informacji dotyczących potwierdzeń, zobacz Potwierdzeń.)
Wykonanie nieprawidłowej
Wykonanie nieprawidłowej obejmuje sytuacje, gdy warunki poza kontrolą programu, takich jak brak pamięci lub błędy We/Wy, wpływa na wynik funkcji.Sytuacji anormalnych powinno się obchodzić w połowu i generowania wyjątków.
Za pomocą wyjątków jest szczególnie odpowiednie do wykonania nieprawidłowej.
Wsparcie MFC
Czy użyć bezpośrednio wyjątki C++ lub użyć makra wyjątek MFC, będą używać Klasa CException lub CException-pochodzących z obiektów, które może zostać wygenerowany w ramach lub aplikacji.
W poniższej tabeli przedstawiono wstępnie zdefiniowane wyjątki, świadczone przez MFC.
Klasa wyjątków |
Znaczenie |
---|---|
Pamięci |
|
Plik wyjątków |
|
Wyjątek archiwum/serializacji. |
|
Odpowiedzi na żądanie dla usługi nieobsługiwane |
|
Wyjątek alokacji zasobów systemu Windows |
|
Wyjątki bazy danych (DAO klasy) |
|
Wyjątki bazy danych (ODBC klasy) |
|
Wyjątki OLE |
|
Wyjątki wysyłki (automation) |
|
Wyjątek, który ostrzega użytkownika w oknie 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 procedur obsługi wyjątków systemu Windows NT strukturę (SEH), zgodnie z opisem zamieszczonym 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 za pomocą słów kluczowych wyjątek C++ i wyjaśniono, jak można dostosować swój kod: