Control de excepciones estructurado (C++)
La compatibilidad con Windows 95, Windows 98, y Windows 2000 (windows NT) un enfoque sólido a administrar las excepciones, denominadas el control estructurado de excepciones, que implica la cooperación de sistema operativo pero también tiene compatibilidad directa en el lenguaje de programación.
Gramática
intento-excepto-instrucción :
instrucción compuesta de__try
instrucción compuesta de__except ( expresión )
Comentarios
Una excepción es un evento que es inesperado o interrumpe la capacidad del proceso de ejecutarse normalmente.Las excepciones se pueden detectar por el hardware y el software.Las excepciones de hardware incluyen dividir por cero y el desbordamiento de un tipo numérico.Las excepciones de software son los que detecta y señalan al sistema llamando a la función de RaiseException y situaciones especiales detectadas por Windows.
Puede escribir un código más confiable con control de excepciones estructurado.Puede asegurarse de que los recursos, como bloques de memoria y archivos, están cerrados correctamente en caso de finalización inesperada.También puede controlar problemas concretos, como memoria insuficiente, con el código estructurado conciso que no se basa en las instrucciones de goto o pruebas detallados de códigos de retorno.
Las instrucciones de intento-excepto y de intento-final es una extensión de Microsoft del lenguaje C que habilita las aplicaciones para obtener el control de un programa después de los eventos que finalizarían normalmente la ejecución.
[!NOTA]
El control estructurado de excepciones trabaja con archivos de código fuente de c y C++.Sin embargo, no está diseñado específicamente para C++.Aunque los destructores para los objetos locales son denominados si utiliza el control de excepciones estructurado en programa de C++. (si utiliza /EHsc), puede asegurarse de que el código sea más portátil mediante el control de excepciones de C++.El mecanismo de control de excepciones de C++ es más flexible, ya que puede controlar las excepciones de cualquier tipo.
Hay dos mecanismos de control de excepciones estructurado:
Controlador de excepciones, que pueden responder a o se descarta la excepción
controladores de terminación, que se llama cuando una excepción provoca la terminación dentro de un bloque de código
Estos dos tipos de controladores son distintos, todavía están estrechamente relacionados mediante un proceso denominado “desenredo de la pila”. Cuando se produce una excepción, Windows busca el controlador de excepciones recién instalado activo actualmente.el controlador puede hacer una de tres cosas:
Pase el control a otros controladores (error para reconocer la excepción.
Reconoce pero descarta la excepción.
Reconoce y controle la excepción.
El controlador de excepciones que reconoce la excepción puede no estar en la función que se ejecuta cuando se ha producido la excepción.En algunos casos puede estar en una función muy posterior en la pila.La función que se está ejecutando, así como todas las funciones del marco de pila, se terminan.Durante este proceso, “se desenreda” el montón: las variables locales de funciones termina, a menos que sean Estática, se borran de la pila.
Como desenreda la pila, el sistema operativo llama a cualquier controlador de terminación que haya escrito para cada función.El uso de un controlador de terminación le ofrece la oportunidad de limpiar los recursos que usa queda de otra manera abierta debido a la terminación anormal.Si ha escrito una sección crítica, puede dejar en el controlador de terminación.Si el programa va a cerrar, puede realizar otras tareas de mantenimiento como cerrar y quitar archivos temporales.
Si tiene módulos de C que utilizan el control estructurado de excepciones, se pueden mezclar con los módulos de C++ que utilizan el control de excepciones de C++.Vea Diferencias de control de excepciones.
Para obtener más información, vea: