Tratamento de Exceções em Python: Guia Completo
Erros são uma parte inevitável do desenvolvimento de software. Mesmo o código mais cuidadosamente escrito pode encontrar situações imprevistas: um arquivo ausente, divisão por zero, problemas de conexão de rede e muito mais. Para evitar que o programa seja encerrado abruptamente nessas situações, o Python oferece um mecanismo poderoso de tratamento de exceções, baseado nas construções try-except-finally.
Como funciona a estrutura try-except-finally no Python?
A estrutura try-except-finally permite capturar exceções que ocorrem durante a execução do programa e garantir uma resposta adequada a elas.
Sintaxe geral:
try:
# Código que pode gerar uma exceção
except AlgumaExcecao:
# Código para tratar a exceção
finally:
# Código que será executado em qualquer caso
Explicação do funcionamento dos blocos:
try: Neste bloco, colocamos o código principal onde uma exceção pode ocorrer.except: Aqui definimos o que fazer se uma exceção for lançada no blocotry. Podemos especificar o tipo exato de exceção (AlgumaExcecao) que queremos capturar.finally: O blocofinallyé executado sempre, independentemente de uma exceção ter sido gerada ou não no blocotry. Ele é comumente usado para liberar recursos, como fechar arquivos, conexões de rede ou conexões com bancos de dados.
Exemplo de uso do try-except-finally
try:
numero = int(input("Digite um número inteiro: "))
resultado = 10 / numero
print(f"Resultado: {resultado}")
except ZeroDivisionError:
print("Erro: Divisão por zero não é permitida.")
except ValueError:
print("Erro: Digite um número inteiro válido.")
finally:
print("Finalizando o programa.")
Como este código funciona:
- O programa solicita que o usuário digite um número inteiro.
- Se o usuário digitar
0, a exceçãoZeroDivisionErroré lançada, e o blocoexceptcorrespondente é executado. - Se o usuário digitar algo que não seja um número inteiro, a exceção
ValueErroré lançada, e o blocoexceptcorrespondente é executado. - O bloco
finallyé executado em qualquer caso, exibindo uma mensagem de finalização do programa.
Para que serve o bloco finally?
O bloco finally garante a execução de um código importante, independentemente de uma exceção ter ocorrido ou não. Veja alguns cenários comuns de uso:
-
Fechamento de arquivos:
arquivo = open("dados.txt", "r") try: conteudo = arquivo.read() # Processamento do conteúdo do arquivo finally: arquivo.close() # Fechamento garantido do arquivo -
Liberação de recursos: Liberar conexões de rede, conexões com bancos de dados e outros recursos que precisam ser fechados ou liberados após o uso.
-
Finalização de logs ou limpeza de dados temporários: O bloco
finallypode ser usado para finalizar a escrita em um arquivo de log ou para remover arquivos temporários criados durante a execução do programa.
Tratamento de múltiplas exceções
Em um único bloco try, podem ocorrer vários tipos diferentes de exceções. O Python oferece algumas maneiras de lidar com essa situação:
Usando múltiplos blocos except
try:
numero = int(input("Digite um número: "))
resultado = 100 / numero
print(resu