Control de excepciones en MSVC

Una excepción es una condición de error, posiblemente fuera del control del programa, que evita que el programa continúe a lo largo de su ruta normal de ejecución. Ciertas operaciones, incluidas la creación de objetos, la entrada/salida de archivo y las llamadas de función realizadas desde otros módulos, son fuentes potenciales de excepciones, aunque el programa se ejecute correctamente. Un código robusto prevé y controla las excepciones. Para detectar errores lógicos, deben usarse aserciones en lugar de excepciones (consulte Uso de aserciones).

Tipos de excepciones

El compilador de Microsoft C++ (MSVC) admite tres tipos de control de excepciones:

  • Control de excepciones de C++

    Para la mayoría de los programas de C++, debe usarse el control de excepciones de C++. Tiene seguridad de tipos y garantiza que se invoquen los destructores de objetos durante el desenredo de la pila.

  • Control estructurado de excepciones

    Windows proporciona su propio mecanismo de excepción, denominado control de excepciones estructurado (SEH). No se recomienda para la programación con C++ o con MFC. Use SEH solo en programas C que no son MFC.

  • Excepciones de MFC

    A partir de la versión 3.0, MFC usa excepciones de C++. Aun así, sigue admitiendo sus anteriores macros de control de excepciones, cuya forma es similar a la de las excepciones de C++. Si busca asesoramiento sobre la mezcla de macros de MFC y excepciones de C++, consulte Excepciones: uso de macros de MFC y excepciones de C++.

Use una opción del compilador /EH para especificar el modelo de control de excepciones que se usará en un proyecto de C++. El control de excepciones de C++ estándar (/EHsc) es el valor predeterminado en los nuevos proyectos de C++ en Visual Studio.

No se recomienda mezclar mecanismos de control de excepciones. Por ejemplo, no use excepciones de C++ con el control de excepciones estructurado. Si usa exclusivamente el control de excepciones de C++, el código será más portable y podrá controlar todo tipo de excepciones. Para obtener más información sobre los inconvenientes del control de excepciones estructurado, consulte Control de excepciones estructurado.

En esta sección

Consulte también

Referencia del lenguaje C++
Control de excepciones x64
Control de excepciones (C++/CLI y C++/CX)