다음을 통해 공유


MSVC의 예외 처리

예외는 프로그램이 일반적인 실행 경로를 따라 계속 진행하는 것을 방해하며 프로그램의 제어를 벗어날 수 있는 오류 상태입니다. 개체 만들기, 파일 입력/출력 및 다른 모듈에서 수행된 함수 호출을 비롯한 특정 작업은 프로그램이 올바르게 실행되는 경우에도 예외의 잠재적인 원인입니다. 강력한 코드는 예외를 예상하고 처리합니다. 논리 오류를 검색하려면 예외가 아닌 어설션을 사용합니다(어설션 사용 참조).

예외 종류

MSVC(Microsoft C++ 컴파일러)는 다음 세 가지 종류의 예외 처리를 지원합니다.

  • C++ 예외 처리

    대부분의 C++ 프로그램의 경우 C++ 예외 처리를 사용해야 합니다. 형식이 안전하며 스택 해제 중에 개체 소멸자가 호출되도록 합니다.

  • 구조적 예외 처리

    Windows는 SEH(구조적 예외 처리)라는 자체 예외 메커니즘을 제공합니다. C++ 또는 MFC 프로그래밍은 권장되지 않습니다. MFC C가 아닌 프로그램에서만 SEH를 사용합니다.

  • MFC 예외

    버전 3.0부터 MFC는 C++ 예외를 사용했습니다. 형식의 C++ 예외와 유사한 이전 예외 처리 매크로를 계속 지원합니다. MFC 매크로와 C++ 예외를 혼합하는 방법에 대한 조언은 예외: MFC 매크로 및 C++ 예외를 사용하는 경우를 참조 하세요.

/EH 컴파일러 옵션을 사용하여 C++ 프로젝트에서 사용할 예외 처리 모델을 지정합니다. 표준 C++ 예외 처리(/EHsc)는 Visual Studio의 새 C++ 프로젝트에서 기본값입니다.

예외 처리 메커니즘을 혼합하지 않는 것이 좋습니다. 예를 들어 구조적 예외 처리에는 C++ 예외를 사용하지 마세요. C++ 예외 처리를 단독으로 사용하면 코드의 이식성이 높아지고 모든 형식의 예외를 처리할 수 있습니다. 구조적 예외 처리의 단점에 대한 자세한 내용은 구조적 예외 처리를 참조 하세요.

이 섹션의 내용

참고 항목

C++ 언어 참조
x64 예외 처리 예외 처리
(C++/CLI 및 C++/CX)