Clique sobre os tópicos listados abaixo para navegar até o conteúdo desejado.

  1. Criar uma exception customizada
  2. Adicionando atributos e métodos
  3. Lançando exception customizada

Para criarmos nossas próprias exceção, precisamos declarar uma classe herdando a classe Exception ou outra classe de exceção desejada como ZeroDivisionError ou outra.

O assunto classe, bem como atributos e métodos foram vistos em Python: Classes, Python: Encapsulamento e Python: Métodos

Sintaxe 1
class minha_excecao (excecao_base)
    "mensagem_padrao_erro"
Exemplo 1
class MeuErro(Exception):
    "Minha mensagem de erro custom" #mensagem de erro padrão
    pass

try:
    raise MeuErro("Ocorreu um erro")
    #raise MeuErro #exibir mensagem padrão
except MeuErro as e:
    print(e)
Saída
Ocorreu um erro

As exceções customizadas aceitam métodos e atributos assim como qualquer outra classe que criamos até agora. Tudo estudado sobre herança também é aplicável.

Sintaxe: atributo
class meu_erro (classe_excecao) #herança
    nome_atributo = <valor_inicial>
    #corpo
Exemplo 2: atributo
class MeuErro(Exception):
    atributo = ''         #atributo
    def __init__(self,p): #construtor
        self.atributo = p
Sintaxe: método
class meu_erro (classe_excecao) #herança
    def nome_metodo(<parametro>):
        #corpo
Exemplo 3: método
class MeuErro(Exception):  
    def getMsg(self):     #método
        print(self.atributo);

O exemplo 4 abaixo contém os trechos de códigos vistos acima que demonstram como adicionar atributos e métodos em nossos erros customizados.

Exemplo 4
class MeuErro(Exception):
    atributo = ''         #atributo
    def __init__(self,p): #construtor
        self.atributo = p
    
    def getMsg(self):     #método
        print(self.atributo);

try:
    #codigo
except MeuErro as e:
    #tratamento
Saída
-

Não há diferença ao lançar ou relançar um exception customiza, exceto pelos atributos extras adicionados. O uso do comando raise é feito como já visto em outros exemplos.

Sintaxe 5
raise minha_excecao (mensagem_erro, <parametros>)
Exemplo 1
class MeuErro(Exception):
    atributo = ''         #atributo
    def __init__(self,p): #construtor
        self.atributo = p
    
    def getMsg(self):     #método
        print(self.atributo);

def funcao():
    try:
        raise MeuErro("Ocorreu um erro") #lançando
    except MeuErro as e:
        raise e;                         #relançando

try:
    funcao()
except MeuErro as e:
    e.getMsg()
Saída
Ocorreu um erro
  1. 12/09/2025 - revisão 3 - Ajustes: navegação 'Próx.', pontuais, sintaxes e objetivos; Adição: Ex. 2/3, 'lançando e relançando'
  2. 18/09/2024 - revisão 2 - Adição de link POO; ajustes gramaticais pontuais
  3. 30/08/2024 - revisão 1 - Correção em links de objetivos
  4. 19/02/2024 - versão inicial