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.