Control de terminación

Un controlador de terminación garantiza que se ejecute un bloque de código específico cada vez que el flujo de control sale de un cuerpo de código protegido determinado. Un controlador de terminación consta de los siguientes elementos.

  • Un cuerpo protegido del código
  • Bloque de código de terminación que se va a ejecutar cuando el flujo de control deja el cuerpo protegido.

Los controladores de terminación se declaran en la sintaxis específica del lenguaje. Con el compilador de optimización de Microsoft C/C++, se implementan mediante __try y __finally. Para obtener más información, vea Sintaxis del controlador.

El cuerpo protegido del código puede ser un bloque de código, un conjunto de bloques anidados o un procedimiento o función completos. Siempre que se ejecute el cuerpo protegido, se ejecutará el bloque de código de terminación. La única excepción a esto es cuando el subproceso finaliza durante la ejecución del cuerpo protegido (por ejemplo, si se llama a la función ExitThread o ExitProcess desde el cuerpo protegido).

El bloque de terminación se ejecuta cuando el flujo de control deja el cuerpo protegido, independientemente de si el cuerpo protegido terminó normal o anómalo. El cuerpo protegido se considera que ha finalizado normalmente cuando se ejecuta la última instrucción del bloque y el control continúa secuencialmente en el bloque de terminación. La terminación anómala se produce cuando el flujo de control deja el cuerpo protegido debido a una excepción o debido a una instrucción de control como return, goto, break o continue. Se puede llamar a la función AbnormalTermination desde dentro del bloque de terminación para determinar si el cuerpo protegido finalizó normalmente.