Obsługa wyjątków w języku Visual C++
Wyjątek jest warunkiem błędu, możliwie poza kontrolą programu, który uniemożliwia kontynuowanie wykonywania programu wzdłuż zwykłej ścieżki.Niektóre operacje, w tym tworzenie obiektu, odczyt z/zapis do pliku i wywołania funkcji z innych modułów, są potencjalnymi źródłami wyjątków, nawet wtedy, gdy program działa poprawnie.Niezawodny kod przewiduje wyjątki i je obsługuje.
Aby wykryć błędy logiczne w ramach pojedynczego programu lub modułu, należy używać asercji zamiast wyjątków (zobacz Wykorzystanie asercji).
Visual C++ wspiera trzy rodzaje obsługi wyjątków:
-
W większości programów, należy używać obsługę wyjątków C++, co jest bezpieczne względem typu i zapewnia wywołanie destruktorów obiektów podczas wykonywania operacji odwijania stosu.
Obsługa wyjątków strukturalnych
System Windows zawiera własny mechanizm wyjątków, nazywany SEH.Nie zaleca się stosowania tego systemu w programowaniu C++ lub MFC.SEH należy używać tylko w programach innych niż MFC C.
-
Od wersji 3.0, MFC wykorzystuje wyjątki C++, ale nadal obsługuje jego starsze makra obsługi wyjątków, które mają podobną formę do wyjątków C++.Chociaż wykorzystanie tych makr nie jest zalecane w przypadku nowych programów, nadal są one obsługiwane w celu zapewnienia zgodności z poprzednimi wersjami.W programach, które już używają makr, można bez ograniczeń wykorzystywać również wyjątki C++.Podczas wstępnego przetwarzania, makra szacują do słów kluczowych obsługi wyjątków zdefiniowanych w implementacji Visual C++ języka C++ od Visual C++ w wersji 2.0.Podczas korzystania z języka C++, można pozostawić na miejscu istniejące makra wyjątków.
Należy używać opcji kompilatora /EH, aby określić typ obsługi wyjątku do użycia w projekcie; obsługa wyjątków języka C++ jest ustawieniem domyślnym.Nie należy ich łączyć obsługi mechanizmów; błędów na przykład nie należy używać wyjątki C++ z obsługi wyjątków strukturalnego.Za pomocą języka C++ obsługi wyjątków powoduje, że Twój kod przenośną i pozwala na potrzeby obsługi wyjątków dowolnego typu.Aby uzyskać więcej informacji na temat minusy obsługi wyjątków strukturalnego, zobacz strukturalnego obsługi wyjątków.Aby uzyskać porady na temat mieszania makr MFC i wyjątków C++, zobacz Wyjątki: wykorzystanie makr MFC i wyjątków C++.
Aby uzyskać informacje dotyczące obsługi wyjątków w aplikacjach CLR, zobacz Obsługa w obszarze/CLR wyjątków.
Aby uzyskać informacje dotyczące obsługi wyjątków na procesorach x64, zobacz Wyjątek obsługi (x 64).