Try-Catch | Python
- Try-Catch | Python
🧱 Estrutura Básica (try, except, else, finally)
try:
# bloco de código que pode gerar erro
resultado = 10 / 0
except ZeroDivisionError:
# trata um erro específico
print("Erro: divisão por zero.")
except ValueError as e:
# captura o erro e armazena em 'e'
print(f"Erro de valor: {e}")
except Exception as e:
# captura qualquer outro erro
print(f"Erro genérico: {e}")
else:
# executa somente se NÃO ocorrer erro
print("Operação concluída com sucesso.")
finally:
# executa sempre (com ou sem erro)
print("Finalizando execução.")
🚨 Lançando Exceções Manualmente (raise)
def dividir(a, b):
if b == 0:
raise ZeroDivisionError("Você tentou dividir por zero!")
return a / b
print(dividir(10, 2))
👉 raise serve para disparar uma exceção, seja padrão (como ValueError) ou personalizada.
🧩 Criando Exceções Personalizadas
class ErroNegativo(Exception):
pass
def processar(x):
if x < 0:
raise ErroNegativo("Valor negativo não permitido.")
print("Processado com sucesso!")
try:
processar(-5)
except ErroNegativo as e:
print(f"Erro personalizado: {e}")
🧠 Verificação Rápida (assert)
def login(usuario):
assert usuario != "", "Usuário não pode ser vazio!"
print("Login válido.")
login("admin")
👉 assert é usado para verificar condições durante o desenvolvimento.
Se a condição for falsa, lança automaticamente um AssertionError.
🔍 Resumo Geral
| Palavra | Função | Executa Quando |
|---|---|---|
try | Bloco que pode gerar exceção | Sempre |
except | Captura e trata exceções | Quando ocorre erro |
else | Bloco alternativo | Quando não ocorre erro |
finally | Limpeza ou fechamento | Sempre, com ou sem erro |
raise | Lança exceção manualmente | Quando desejado |
assert | Testa condição lógica | Se falsa → erro |