Como Criar sua Própria Exceção em Python

Ana Maria Gomes
5 minutos de leitura

Conteúdos do tutorial

Ao programar em Python, você pode se deparar com situações em que precisa “levantar” uma exceção manualmente. Isso pode ser útil para o tratamento de erros, depuração ou para impor certas condições no seu código. Neste artigo, vamos explorar como criar e levantar sua própria exceção em Python, e garantir que ela possa ser capturada usando um bloco try/except.

Exemplo de código em uma tela de computador.

Levantando uma Exceção em Python

Para gerarmos uma exceção em Python, basta usar a palavra-chave raise juntamente da exceção que se quer levantar. Veja o exemplo abaixo:

print('Olá, mundo!')
raise ValueError
print('Esta linha nunca executa')

Ao executar este código, um erro do tipo ValueError é erguido na segunda linha. Isso faz com que a mensagem "Esta linha nunca executa" não seja exibida, já que o código para de maneira forçada ao encontrar o erro.

Também é possível adicionar uma mensagem informativa do erro entre parênteses. Em geral, vamos querer que a mensagem explique o que causou o erro, possivelmente também trazendo algum tipo de recomendação ou solução. Veja o exemplo abaixo:

n = 10
div = int(input(f'Digite um valor para dividir o número {n}: '))

if div == 0:
    raise ValueError('O divisor não pode ser zero!')
else:
    resultado = n / div
    print(f'O resultado é {resultado}')

Criando Exceções específicas em Python

A chave para levantar exceções em Python é usar a exceção que melhor se adeque ao seu problema. Por exemplo, se o erro é causado por uma chave inexistente em um dicionário, faz sentido lançarmos um KeyError. Se a causa do erro for um tipo de dado inadequado, queremos lançar um TypeError, e assim por diante.

Também podemos levantar uma “exceção genérica” em Python com Exception:

# Isso não é recomendado
raise Exception('Um erro genérico aconteceu!')

Porém isso não é recomendado, uma vez que não fica claro o motivo do erro ter sido lançado. Prefira sempre lançar um erro que melhor descreva o que aconteceu! Caso você não conheça muitos tipos de erro em Python, leia nosso artigo sobre os erros mais comuns em Python.

Relançando Exceções em Python

Às vezes, você pode querer capturar um erro no bloco except, registrar a sua presença, e em seguida simplesmente relançar a exceção. A melhor maneira de fazer isso é usar a palavra-chave raise de forma isolada:

x = 10
y = 0
try:
    x / y
except ZeroDivisionError as error:
    with open('log_de_erros.txt', 'a') as arquivo_log:
        arquivo_log.write('Um erro aconteceu!\n')
    raise  # Relança a exceção

No exemplo acima, o ZeroDivisionError continua sendo lançado, já que há um raise dentro do bloco except. Contudo, entre o erro acontecer e ser relançado, ele é escrito para dentro do arquivo de texto log_de_erros.txt.

Criando uma Exceção em Python Customizada

Para mais controle e clareza, você pode definir suas próprias exceções com nomes personalizados. Para fazer isso, basta criar uma nova classe herdando de Exception. Como podemos ver abaixo, não é preciso nenhuma linha a mais na classe, apenas uma declaração pass:

class MeuErro(Exception):
    pass


print('Olá, mundo!')
raise MeuErro
print('Esta linha nunca executa')

Resumo

Neste artigo, abordamos como criar uma exceção em Python e levantá-la manualmente com raise. Vimos qual a importância de ser específico com as exceções que você levanta. Também discutimos as melhores práticas para capturar e relançar exceções, bem como criar tipos de erros personalizados para suas aplicações. Lembre-se de sempre usar o tipo de exceção mais específico e fornecer mensagens claras e informativas para facilitar o processo de debugging!

Inscreva-se gratuitamente e fique atualizado

Receba toda semana um resumo dos principais conteúdos da Asimov direto no seu e-mail. 100% livre de spam.

Áreas de interesse: