AnyCompiler

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!")
Output
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")
Output
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.