Obsługa wyjątków w msvcException handling in 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.An exception is an error condition, possibly outside the program's control, that prevents the program from continuing along its regular execution path. Niektóre operacje, w tym tworzenie obiektów, wejście/dane wyjściowe pliku i wywołania funkcji wykonane z innych modułów, są potencjalnymi źródłami wyjątków, nawet jeśli program działa poprawnie.Certain operations, including object creation, file input/output, and function calls made from other modules, are all potential sources of exceptions, even when your program is running correctly. Niezawodny kod przewiduje wyjątki i je obsługuje.Robust code anticipates and handles exceptions. Aby wykryć błędy logiczne, należy użyć potwierdzeń, a nie wyjątków (zobacz Używanie potwierdzeń).To detect logic errors, use assertions rather than exceptions (see Using Assertions).

Rodzaje wyjątkówKinds of exceptions

Kompilator Microsoft C++ (MSVC) obsługuje trzy rodzaje obsługi wyjątków:The Microsoft C++ compiler (MSVC) supports three kinds of exception handling:

  • Obsługa wyjątków języka C++C++ exception handling

    W przypadku większości programów języka C++ należy użyć obsługi wyjątków języka C++.For most C++ programs, you should use C++ exception handling. Jest bezpieczny dla typu i zapewnia, że destruktory obiektów są wywoływane podczas odwijania stosu.It's type-safe, and ensures that object destructors are invoked during stack unwinding.

  • Obsługa wyjątków strukturalnychStructured exception handling

    System Windows dostarcza własny mechanizm wyjątków, o nazwie obsługa wyjątków strukturalnych (SEH).Windows supplies its own exception mechanism, called structured exception handling (SEH). Nie jest zalecane dla programowania Języka C++ lub MFC.It's not recommended for C++ or MFC programming. SEH należy używać tylko w programach innych niż MFC C.Use SEH only in non-MFC C programs.

  • Wyjątki MFCMFC exceptions

    Od wersji 3.0, MFC używa wyjątków C++.Since version 3.0, MFC has used C++ exceptions. Nadal obsługuje jego starszych wyjątków obsługi makr, które są podobne do wyjątków C++ w formularzu.It still supports its older exception handling macros, which are similar to C++ exceptions in form. Aby uzyskać porady dotyczące mieszania makr MFC i wyjątków C++, zobacz Wyjątki: Używanie makr MFC i wyjątków C++.For advice about mixing MFC macros and C++ exceptions, see Exceptions: Using MFC Macros and C++ Exceptions.

Użyj opcji kompilatora /EH, aby określić model obsługi wyjątków do użycia w projekcie C++.Use an /EH compiler option to specify the exception handling model to use in a C++ project. Standardowa obsługa wyjątków języka C++ (/EHsc) jest wartością domyślną w nowych projektach języka C++ w programie Visual Studio.Standard C++ exception handling (/EHsc) is the default in new C++ projects in Visual Studio.

Nie zaleca się mieszania mechanizmów obsługi wyjątków.We don't recommend you mix the exception handling mechanisms. Na przykład nie należy używać wyjątków Języka C++ z obsługą wyjątków strukturalnych.For example, don't use C++ exceptions with structured exception handling. Za pomocą obsługi wyjątków C++ wyłącznie sprawia, że kod bardziej przenośne i umożliwia obsługę wyjątków dowolnego typu.Using C++ exception handling exclusively makes your code more portable, and it allows you to handle exceptions of any type. Aby uzyskać więcej informacji na temat wad obsługi wyjątków strukturalnych, zobacz Obsługa wyjątków strukturalnych.For more information about the drawbacks of structured exception handling, see Structured Exception Handling.

W tej sekcjiIn this section

Zobacz teżSee also

Odwołanie do języka języka C++C++ Language Reference
Obsługa wyjątku x64x64 exception handling
Obsługa wyjątków (C++/CLI i C++/CX)Exception Handling (C++/CLI and C++/CX)