Capítulo 8: Conteúdo Extra#

ch8

Tratamento de erros (try/except)#

Em Python, usamos o bloco try/except para lidar com erros que podem ocorrer durante a execução do programa, evitando que ele seja interrompido inesperadamente.

Exemplo básico com try/except:

try:
    numero = int(input("Digite um número: "))
    resultado = 10 / numero
    print(f"O resultado é {resultado}.")
except ZeroDivisionError:
    print("Erro: divisão por zero.")
except ValueError:
    print("Erro: entrada inválida.")

Saída:

Digite um número: 2
O resultado é 5.0.
Digite um número: 0
Erro: divisão por zero.
Digite um número: abc
Erro: entrada inválida.

Blocos else e finally no tratamento de erros#

Além do try e except, Python permite o uso opcional dos blocos else e finally para tornar o tratamento de erros mais completo.

else

Executado somente se nenhum erro ocorrer no bloco try.

finally

Executado sempre, com ou sem erro. É útil para liberar recursos, como fechar arquivos ou conexões com banco de dados.

Exemplo com else e finally:

try:
    numero = int(input("Digite um número: "))
    resultado = 10 / numero
except ZeroDivisionError:
    print("Erro: divisão por zero.")
except ValueError:
    print("Erro: entrada inválida.")
else:
    print(f"O resultado é {resultado}.")
finally:
    print("Execução finalizada.")

Saída:

Digite um número: 2
O resultado é 5.0.
Execução finalizada.
Digite um número: 0
Erro: divisão por zero.
Execução finalizada.
Digite um número: xyz
Erro: entrada inválida.
Execução finalizada.

Usando try/except em funções#

É comum usar try/except dentro de funções para torná-las mais seguras e reutilizáveis.

def dividir(a, b):
    try:
        return a / b
    except ZeroDivisionError:
        return "Erro: divisão por zero."

print(dividir(10, 2))  # Saída: 5.0
print(dividir(10, 0))  # Saída: Erro: divisão por zero.

Saída:

5.0
Erro: divisão por zero.

Tabela com Resumo#

Bloco

Quando é executado

try

Tenta executar um código que pode dar erro

except

Executa se um erro ocorrer no try

else

Executa se nenhum erro ocorrer no try

finally

Sempre executa, com ou sem erro