Udostępnij za pośrednictwem


Obsługa wyjątków w programie Visual C++

Wyjątkiem jest warunek błędu, ewentualnie poza kontrolą programu, który uniemożliwia kontynuowanie wzdłuż ścieżki regularne wykonywanie programu.Niektórych operacji, łącznie z tworzeniem obiektu, plik wyjścia i wywołania funkcji z innymi modułami są wszystkie potencjalne źródła wyjątki, nawet wtedy, gdy program działa poprawnie.Niezawodny kod przewiduje wyjątki i je obsługuje.

Aby wykryć błędy logiczne w ramach jednego programu lub moduł, użyj potwierdzeń zamiast wyjątki (zobacz Za pomocą potwierdzeń).

Visual C++ obsługuje trzy rodzaje obsługi wyjątków:

  • Obsługa wyjątków C++

    Większość programów C++ należy używać obsługi wyjątków C++, który typ palety i zapewnia destruktory są wywoływane podczas niekontrolowanej stos obiektów.

  • Structured exception handling

    System Windows zapewnia własny mechanizm wyjątek, nazywane SEH.Nie jest zalecane dla programowania C++ lub MFC.SEH należy używać tylko w programach - MFC C.

  • Wyjątki MFC

    Od wersji 3.0 MFC użył wyjątków C++, lecz nadal obsługuje starsze wyjątki obsługi makr, które są podobne do wyjątków C++ w formie.Chociaż te makra nie są zalecane dla nowego procesu programowania, są nadal obsługiwane dla zgodności z poprzednimi wersjami.W programach, które są już używane makra można swobodnie korzystać również wyjątki C++.Podczas wstępnego przetwarzania, makra oceny do słów kluczowych zdefiniowanych w implementacji języka Visual C++ języka C++ w Visual C++ w wersji 2.0 obsługi wyjątków.Podczas zacząć używać wyjątków C++, można pozostawić istniejących makr wyjątek w miejscu.

Użyj /EH opcję kompilatora, aby określić typ obsługi wyjątków do użyć w projekcie; Obsługa wyjątków C++ jest ustawieniem domyślnym.Nie należy mieszać błąd obsługi mechanizmów; na przykład nie należy używać wyjątki C++ z SEH.Aby uzyskać porady na temat miksowania makra MFC i wyjątki C++, zobacz wyjątki: przy użyciu makra MFC i wyjątki C++.

Informacji dotyczących 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 procesorów x 64, zobacz Wyjątek obsługi (x 64).

Zobacz też

Inne zasoby

Skorowidz języka C++