Udostępnij za pośrednictwem


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:

  • C++, obsługa 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.

  • Wyjątki MFC

    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).

Zobacz też

Inne zasoby

Materiały referencyjne dotyczące języka C++