A linguagem python tem sido empregada para automatização de processos, como por exemplo, fechar a conexão de um banco ao tratar um erro. No tratamento de exceções, a seguinte cláusula (ou bloco) garante a execução independentemente de uma exceção ter ocorrido ou não no código anterior:
- A)except
Errada: except é usado para capturar e tratar exceções, não para garantir execução em qualquer cenário.
- B)termination
Errada: termination não é uma cláusula padrão do tratamento de exceções em Python.
- C)try
Errada: try apenas define o trecho que será monitorado, mas não garante execução final obrigatória.
- D)finally
Certa: finally executa ao final do bloco, com ou sem exceção, sendo ideal para liberar recursos.
- E)raise
Errada: raise é usado para lançar exceções, e não para assegurar execução do código posterior.
Gabarito: D
Em Python, o tratamento de exceções costuma seguir a estrutura try/except/finally. Pense assim: o try é a área de risco, o except é o plano B quando algo dá errado, e o finally é o “arruma a casa antes de sair”, porque ele executa quase sempre, haja erro ou não. É exatamente isso que a questão cobra: a cláusula que garante execução independentemente de ter ocorrido exceção é o bloco finally. Ele é muito usado para liberar recursos, como fechar arquivo, encerrar conexão com banco de dados ou encerrar sessão. Isso evita deixar “porta aberta” depois que o programa termina sua tarefa. Se ocorrer uma exceção e ela for tratada, o finally ainda roda. Se não ocorrer exceção nenhuma, ele também roda. Por isso o gabarito é a letra D. Já as outras opções não têm essa função: except trata o erro, try delimita o código monitorado e raise serve para lançar exceções. Ou seja, a banca quer saber qual bloco executa mesmo quando o programa resolve fazer drama, e a resposta é o finally.