Como usar finally no tratamento de exceções em Python
O bloco finally
em Python é utilizado dentro do tratamento de exceções para garantir que um determinado trecho de código seja executado, independentemente de a exceção ter ocorrido ou não.
Estrutura do try, except e finally
try:
arquivo = open("dados.txt", "r")
conteudo = arquivo.read()
print(conteudo)
except FileNotFoundError:
print("Erro: Arquivo não encontrado.")
finally:
print("Encerrando execução.")
Nesse exemplo, mesmo que ocorra um erro ao tentar abrir o arquivo, a mensagem do bloco finally
será exibida.
Garantindo o fechamento de recursos
O finally
é comumente utilizado para fechar arquivos, liberar conexões com bancos de dados e outros processos críticos:
try:
conexao = conectar_banco()
executar_query(conexao, "SELECT * FROM usuarios")
except Exception as e:
print(f"Erro ao acessar o banco de dados: {e}")
finally:
conexao.close()
print("Conexão encerrada.")
Quando e por que usar o bloco finally em Python?
O bloco finally
é essencial para garantir que recursos sejam liberados corretamente, independentemente do sucesso ou falha na execução do código. Ele previne problemas como vazamento de memória e conexões não encerradas, tornando o programa mais confiável e eficiente.
Algumas aplicações:
- Fechamento de arquivos abertos após leitura ou escrita.
- Encerramento de conexões com bancos de dados.
- Liberação de recursos alocados em memória.
- Execução de comandos críticos que não podem ser ignorados.
Dicas para quem está começando
- Utilize
finally
sempre que precisar garantir a liberação de recursos. - Evite colocar código desnecessário dentro do
finally
. - Use
try
,except
efinally
juntos para um tratamento de exceções mais robusto. - Teste seu código com e sem erros para entender o comportamento do
finally
. - Se um erro ocorrer dentro do
finally
, ele pode sobrescrever a exceção original, então tenha cuidado ao manipular exceções dentro do bloco.

Laura Mendes
Especialista em automação de processos com Python e integração de sistemas.
Mais sobre o autor