🐍 9.4 Definindo uma Exceção Personalizada
🎯 Objetivo: Aprender a criar suas próprias classes de erro para tornar seu código mais expressivo e facilitar a captura de falhas específicas do domínio da sua aplicação.
🏗️ O Conceito: Herdando de Exception
Em Python, criar uma nova exceção é tão simples quanto criar uma nova classe que herda da classe base Exception (direta ou indiretamente). Por convenção, os nomes de classes de erro em Python costumam terminar com o sufixo Error.
💻 Mão na Massa
Passo 1: Criando a Classe de Exceção
Vamos definir uma exceção que guarda um valor associado ao erro.
class MeuErro(Exception):
def __init__(self, valor):
self.valor = valor
def __str__(self):
return f"MeuErro: {repr(self.valor)}"
# Exemplo de uso:
try:
raise MeuErro(2 * 2)
except MeuErro as e:
print(f'🚨 Erro capturado! Valor: {e.valor}')Passo 2: Estrutura de Exceções de Domínio
Para projetos grandes, é comum definir uma classe base para o projeto e especializá-la.
class ProjetoBaseError(Exception):
"""Classe base para todas as exceções deste projeto"""
pass
class ValorMuitoPequenoError(ProjetoBaseError):
"""Lançada quando o valor é menor que o esperado"""
pass
class ValorMuitoGrandeError(ProjetoBaseError):
"""Lançada quando o valor excede o limite permitido"""
pass✅ Resultado Esperado
Ao definir suas próprias exceções, você ganha a capacidade de capturar erros específicos sem capturar outros problemas inesperados no sistema.
Saída no Console:
🚨 Erro capturado! Valor: 4🚨 Erros Comuns
| Erro | Causa | Solução |
|---|---|---|
Escapar o Exception | Herdar de classes que não são exceções. | Sempre herde de Exception ou subclasses dela. |
| Nomeação | Nomes genéricos como Erro. | Use sufixos claros como LoginError ou NetworkTimeoutError. |