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 |
---|---|
Braku pamięci |
|
Wyjątek plików |
|
Archiwum/serializacji wyjątek |
|
Odpowiedź na żądanie 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 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: