Finalmente bloquear

Definição - o que significa finalmente bloco?

Um bloco finally, no contexto do C #, refere-se a um bloco de instruções que sempre são executadas, independentemente de eventos inesperados ou exceções que possam ocorrer durante a execução de um aplicativo. É utilizado opcionalmente com o bloco "try / catch" e garante a execução de qualquer código que deva ser executado antes de sair do bloco "try", independentemente do sucesso ou falha da execução da aplicação.

A execução de um bloco finally tem como objetivo liberar recursos, como conexões de banco de dados, que geralmente estão disponíveis em quantidades limitadas. Por esse mecanismo, o descarte de recursos ocorre antes da operação de finalização do coletor de lixo, otimizando assim a memória.

Definirtec explica Finalmente Bloco

O código no bloco finally pode ser empregado para lidar com exceções assim que elas ocorrerem, limpar a memória alocada no bloco "try" ou descartar objetos contendo recursos externos (como identificadores de arquivo) usados ​​no bloco "try". Um bloco finally também facilita o desempenho de tarefas de manutenção, como redefinir um cursor para um estado normal antes do momento de uma exceção.

Em geral, o código em um bloco finally é executado quando o controle sai de um bloco try como resultado da execução normal, como resultado da execução de uma instrução "break", "goto", "continue" ou "return" ou devido a uma exceção fora da instrução try.

Sempre que ocorre uma exceção no bloco try, o controle passa da linha que causou a exceção para o bloco catch mais próximo (manipulador de exceção) e então para o bloco finally. Além disso, quando uma exceção é relançada em um bloco catch, o controle é transferido para o bloco finally. Assim, o código que segue a linha onde ocorreu a exceção será ignorado.

As exceções não devem ser lançadas explicitamente em um bloco finally. Se ocorrer uma exceção durante a execução de um bloco finally, qualquer código após o ponto em que a exceção é lançada não será executado e a exceção se propagará para o bloco try externo. Se o bloco finally já estiver tratando de outra exceção, isso resultará no encerramento do processamento da exceção atual.

Deve-se ter cuidado para não transferir explicitamente a execução para dentro ou para fora de um bloco finally, pois essa não é uma transferência válida.

Esta definição foi escrita no contexto de C #