Obsługa wyjątków w MSVC
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 obiektów, dane wejściowe/wyjściowe pliku i wywołania funkcji z innych modułów, są potencjalnymi źródłami wyjątków, nawet jeśli program działa poprawnie. Niezawodny kod przewiduje wyjątki i je obsługuje. Aby wykryć błędy logiki, użyj asercji, a nie wyjątków (zobacz Używanie asercji).
Rodzaje wyjątków
Kompilator języka Microsoft C++ (MSVC) obsługuje trzy rodzaje obsługi wyjątków:
-
W przypadku większości programów języka C++ należy użyć obsługi wyjątków języka C++. Jest bezpieczny pod względem typu i gwarantuje, że destruktory obiektów są wywoływane podczas odwijania stosu.
Obsługa wyjątków strukturalnych
System Windows dostarcza własny mechanizm wyjątków, nazywany obsługą wyjątków strukturalnych (SEH). Nie zaleca się programowania W języku C++ ani MFC. Używaj SEH tylko w programach innych niż MFC C.
-
Od wersji 3.0 MFC używa wyjątków języka C++. Nadal obsługuje starsze makra obsługi wyjątków, które są podobne do wyjątków języka C++ w postaci. Aby uzyskać porady dotyczące mieszania makr MFC i wyjątków języka C++, zobacz Wyjątki: Używanie makr MFC i wyjątków języka C++.
Użyj /EH opcji kompilatora, aby określić model obsługi wyjątków do użycia w projekcie C++. Obsługa wyjątków standardowego języka C++ (/EHsc) jest domyślna w nowych projektach języka C++ w programie Visual Studio.
Nie zalecamy łączenia mechanizmów obsługi wyjątków. Na przykład nie używaj wyjątków języka C++ z obsługą wyjątków strukturalnych. Korzystanie z obsługi wyjątków języka C++ sprawia, że kod jest bardziej przenośny i umożliwia obsługę wyjątków dowolnego typu. Aby uzyskać więcej informacji na temat wad obsługi wyjątków strukturalnych, zobacz Obsługa wyjątków strukturalnych.
W tej sekcji
Nowoczesne najlepsze rozwiązania dotyczące języka C++ dotyczące wyjątków i obsługi błędów
Jak za pomocą interfejsu między kodem wyjątkowym i innym niż wyjątkowy
Zobacz też
Dokumentacja języka
C++ x64 obsługa
wyjątków obsługi wyjątków (C++/CLI i C++/CX)
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla