Restrições de manipuladores de terminação
Não é possível usar um goto a instrução para saltar para um __try bloco de instruções ou um __finally bloco de declaração.Em vez disso, você deve inserir o bloco de instruções por meio de um fluxo normal de controle.(Você pode, Entretanto, saltar de um __try bloco de declaração.) Além disso, não é possível aninhar um manipulador de exceção ou manipulador de terminação dentro de um __finally bloco.
Além disso, alguns tipos de código permitidos em um manipulador de terminação produzem resultados questionáveis, portanto, você deve usá-los com cuidado, senão absolutamente.Um é um goto instrução que sai de um __finally bloco de declaração.Se o bloco está em execução como parte de finalização normal, não acontece nada de incomum.Mas se o sistema é desenrolar a pilha, o que pára de liberação e a função atual ganha controle como não se houvesse nenhum anormal.
A return instrução dentro de um __finally bloco de declaração apresenta aproximadamente a mesma situação.O controle retorna para o chamador imediato da função que contém o manipulador de terminação.Se o sistema foi desenrolar a pilha, esse processo é interrompido e o programa continua como não se tivesse havido nenhuma exceção.