Tratamento de Exceções (try/except)
Quando algo dá errado — dividir por zero, converter um texto que na verdade não é um número — o Python lança uma exceção. Se não for capturada, isso quebra seu programa. try/except permite capturá-la e decidir o que acontece em vez disso.
try:
result = 10 / 0
except ZeroDivisionError:
print("You cannot divide by zero!")You cannot divide by zero!
O Python tenta executar o código dentro do try. No momento em que ocorre um ZeroDivisionError, ele pula direto para o bloco except correspondente em vez de quebrar — o programa continua rodando normalmente depois disso.
Capturando o erro de verdade, e finally
except SomeError as e permite acessar o objeto de erro real — útil para registrar logs ou mostrar uma mensagem real em vez de uma genérica. finally roda não importa o que aconteceu — se uma exceção foi lançada ou não — o que o torna o lugar certo para código de limpeza.
try:
number = int("not a number")
except ValueError as e:
print(f"Error: {e}")
finally:
print("This always runs")Error: invalid literal for int() with base 10: 'not a number' This always runs
Capture tipos de exceção específicos (ZeroDivisionError, ValueError) em vez de um except genérico — assim um bug realmente inesperado não é engolido silenciosamente junto com o erro que você de fato esperava.
A seguir: classes — agrupar dados junto com as funções que operam sobre eles.
Exercício de Prática
Tente converter a string "abc" para um int, capture o ValueError, e imprima "Not a number" em vez de travar.