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
.
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!
Cursos de programação gratuitos com certificado
Aprenda a programar e desenvolva soluções para o seu trabalho com Python para alcançar novas oportunidades profissionais. Aqui na Asimov você encontra:
- Conteúdos gratuitos
- Projetos práticos
- Certificados
- +20 mil alunos e comunidade exclusiva
- Materiais didáticos e download de código
Comentários