Tratamento de Erros em Python: Guia Completo com try-except-finally

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

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 bloco try. Podemos especificar o tipo exato de exceção (AlgumaExcecao) que queremos capturar.
  • finally: O bloco finally é executado sempre, independentemente de uma exceção ter sido gerada ou não no bloco try. 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:

  1. O programa solicita que o usuário digite um número inteiro.
  2. Se o usuário digitar 0, a exceção ZeroDivisionError é lançada, e o bloco except correspondente é executado.
  3. Se o usuário digitar algo que não seja um número inteiro, a exceção ValueError é lançada, e o bloco except correspondente é executado.
  4. 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 finally pode 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                

Blogs

Book Recommendations