Share via


Control de excepciones en MFC

En este artículo se explica los mecanismos de control de excepciones disponibles en MFC. Dos mecanismos disponibles:

  • Excepciones de C++, disponible en la versión 3.0 de MFC y posterior

  • Las macros de excepción de MFC, disponible en las versiones 1.0 de MFC y posterior

Si escribe una nueva aplicación mediante MFC, debe utilizar el mecanismo de C++. Puede utilizar el mecanismo macro- basado si la aplicación existente utiliza ya ese mecanismo ampliamente.

Puede convertir fácilmente código existente para utilizar excepciones de C++ en lugar de las macros de excepción de MFC. Las ventajas de convertir el código e instrucciones para ello se describen en el caso Excepciones: Convertir desde macros de excepciones de MFC.

Si ha desarrollado ya una aplicación utilizando las macros de excepción de MFC, puede seguir utilizando estas macros en el código existente, mientras utiliza las excepciones de C++ en el nuevo código. El artículo Excepciones: Cambios en las macros de excepción en la versión 3.0 proporciona instrucciones para ello.

Nota

Para habilitar el control de excepciones de C++ en el código, seleccione el permiso C++ Excepciones en la generación de código en la carpeta C/C++ de cuadro de diálogo de Páginas de propiedades (Visual C++) del proyecto, o utilice la opción del compilador /GX.El valor predeterminado es /GX –, que deshabilita el control de excepciones.

En este artículo se tratan los siguientes temas:

  • Cuándo utilizar excepciones

  • Compatibilidad con la excepción de MFC

  • Información adicional sobre excepciones

Cuándo utilizar Excepciones

Tres categorías de resultados pueden ocurrir cuando una función se llama durante la ejecución del programa: ejecución normal, ejecución de error, o ejecución anómala. Cada categoría se describe a continuación.

  • Ejecución normal

    La función puede ejecutarse normalmente y volver. Algunas funciones devuelven un código de resultado al llamador, que indica el resultado de la función. Los códigos de resultado posibles se definen estrictamente para la función y representan el intervalo de los posibles resultados de la función. El código de resultado puede indicar corrección o error o incluso puede indicar un tipo determinado de error que está comprendido en el intervalo normal de expectativas. Por ejemplo, una función de estado de archivo puede devolver un código que indica que el archivo no existe. Observe que el término “código de error” no se utiliza como un código de resultado representa uno de muchos resultados esperados.

  • Ejecución errónea

    El llamador incurre en alguna equivocación en pasar argumentos a la función o llama a la función en un contexto inadecuado. Esta situación se produce un error, y debe ser detectado por una aserción durante el desarrollo de software. (Para obtener más información sobre las aserciones, vea Aserciones de C/C++.)

  • Ejecución anormal

    La ejecución anormal incluye las situaciones en las condiciones fuera del control del programa, como memoria insuficiente o errores de E/S, se influyen el resultado de la función. Las situaciones anormales deben controlarse en la detección y excepciones.

Mediante excepciones es especialmente adecuado para la ejecución anómala.

Compatibilidad con la excepción de MFC

Si utiliza las excepciones de C++ directamente o utiliza las macros de excepción de MFC, utilizará CException (Clase) o CException- objetos derivados que puede iniciar el marco o por la aplicación.

La tabla siguiente se muestran las excepciones predefinidas proporcionadas por MFC.

Clase de excepción

Significado

CMemoryException (Clase)

En fuera-de- memoria

CFileException (Clase)

Excepción de archivo

CArchiveException (Clase)

Excepción de archivos y de Serialización

CNotSupportedException (Clase)

Respuesta a la solicitud del servicio no compatibles

CResourceException (Clase)

Excepción de la asignación de recursos de Windows

CDaoException (Clase)

Excepciones de base de datos (clases DAO)

CDBException (Clase)

Excepciones de base de datos (clases ODBC)

COleException (Clase)

Excepciones de OLE

COleDispatchException (Clase)

Excepciones de envío (automatización)

CUserException (Clase)

La excepción que avisa al usuario un cuadro de mensaje, inicia CException (Clase)genérico

Nota

MFC admite las excepciones de C++ y macros de excepción de MFC.MFC no admite directamente a los controladores de excepciones estructurados Windows NT (SEH), como se describe en Control de excepciones estructurado.

Información adicional sobre excepciones

Los artículos siguientes explican mediante la biblioteca MFC para dar de excepción:

Los artículos siguientes comparan las macros de excepción de MFC con las palabras clave de excepciones de C++ y explica cómo puede adaptar el código:

Vea también

Referencia

Control de excepciones de C++

Otros recursos

Cómo se hago: ¿Cree mis clases de excepción personalizadas de Own?