Обработка исключений в MSVC
Исключение — это условие ошибки, возможно вне элемента управления программы, которое не позволяет продолжать выполнение программы по обычному пути выполнения. Некоторые операции, включая создание объектов, входные и выходные данные файлов и вызовы функций из других модулей, являются потенциальными источниками исключений, даже если программа работает правильно. В надежном коде можно предвидеть и обработать исключения. Для обнаружения логических ошибок используйте утверждения, а не исключения (см. раздел Использование утверждений).
Виды исключений
Компилятор Microsoft C++ (MSVC) поддерживает три типа обработки исключений:
-
Для большинства программ C++ следует использовать обработку исключений C++. Он является типобезопасным и гарантирует, что деструкторы объектов вызываются во время очистки стека.
Структурированная обработка исключений
Windows предоставляет собственный механизм исключения, называемый структурированной обработкой исключений (SEH). Это не рекомендуется для программирования на C++ или MFC. Используйте SEH только в программах, написанных на языке С без использования MFC.
-
С версии 3.0 MFC использует исключения C++. Он по-прежнему поддерживает более старые макросы обработки исключений, которые по форме похожи на исключения C++. Советы по сочетанию макросов MFC и исключений C++ см. в разделе Исключения: использование макросов MFC и исключений C++.
Используйте параметр компилятора /EH , чтобы указать модель обработки исключений, используемую в проекте C++. Стандартная обработка исключений C++ (/EHsc) используется по умолчанию в новых проектах C++ в Visual Studio.
Мы не рекомендуем использовать механизмы обработки исключений. Например, не используйте исключения C++ со структурированной обработкой исключений. Использование обработки исключений C++ делает код более переносимым и позволяет обрабатывать исключения любого типа. Дополнительные сведения о недостатках структурированной обработки исключений см. в разделе Структурированная обработка исключений.
В этом разделе
Современные рекомендации по обработке ошибок и исключений на C++
Практическое руководство. Разработка с учетом безопасности исключений
Практическое руководство. Интерфейс между кодом с исключениями и без исключений
См. также раздел
Справочник по языку
C++ Обработка
исключений x64Обработка исключений (C++/CLI и C++/CX)