🐍 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

ErroCausaSolução
Escapar o ExceptionHerdar de classes que não são exceções.Sempre herde de Exception ou subclasses dela.
NomeaçãoNomes genéricos como Erro.Use sufixos claros como LoginError ou NetworkTimeoutError.

⬅️ Capítulo Anterior | Próximo Capítulo ➡️