Objetivos
        
    
    
    
        
Criando uma 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
         
     
    
        
Adicionando atributos e métodos
    
    
        
            
                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
            
-
         
     
    
        
Lançando e relançando
    
    
        
            
                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
         
     
    
        Histórico de atualizações
        
     
    
        
            
                - 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'
 
                - 18/09/2024 - revisão 2 - Adição de link POO; ajustes gramaticais pontuais
 
                - 30/08/2024 - revisão 1 - Correção em links de objetivos
 
                - 19/02/2024 - versão inicial
 
            
         
     
    
            
            
                
                    
                    Os cursos oferecidos nesta página são cursos fornecidos por parceiros. Ao comprar um curso clicando
                em seu banner, você está ajudando a manter o projeto TutorialDev vivo. Os sites dos cursos parceiros utilizam cookies.