English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutorial Básico do Python

Controle de Fluxo do Python

Função do Python

Tipos de Dados do Python

Operações de Arquivos do Python

Objetos e Classes do Python

Data e Hora do Python

Conhecimento Avançado do Python

Manual de Referência do Python

Exceções Personalizadas do Python

O Python tem muitosExceções incorporadas, quando alguns erros ocorrem, eles forçam seu programa a exibir erros.

Mas, às vezes, você pode precisar criar um tratamento de exceção personalizado que atenda aos seus propósitos.

No Python, o usuário pode definir esse tipo de exceção criando uma nova classe. A classe de exceção deve derivar diretamente ou indiretamente da classe Exception. A maioria das exceções incorporadas também derivam dessa classe.

>>> class CustomError(Exception):
... pass
...
>>> raise CustomError
Traceback (última chamada mais recente):
...
__main__.CustomError
>>> raise CustomError("Ocorreu um erro")
Traceback (última chamada mais recente):
...
__main__.CustomError: Ocorreu um erro

Aqui, criamos uma exceção definida pelo usuário chamada CustomError, que deriva da classe Exception. Como outras exceções, você pode levantar essa nova exceção usando uma instrução raise com uma mensagem de erro opcional.

Quando desenvolvemos grandes programas Python, é melhor armazenar todas as exceções definidas pelo usuário em um arquivo separado. Muitos módulos padrão podem fazer isso. Eles definem exceções como exceptions.py ou errors.py.

As classes de exceções definidas pelo usuário podem realizar todas as operações que uma classe comum pode executar, mas geralmente as tornamos simples e claras. A maioria das implementações declara uma classe base personalizada e deriva outras classes de exceções a partir dela. No exemplo a seguir, isso tornará o conceito mais claro.

Exemplo: Exceções definidas pelo usuário em Python

Neste exemplo, explicaremos como usar exceções definidas pelo usuário em um programa.

Este programa exigirá que o usuário insira um número até que ele acerte o número armazenado. Para ajudá-lo a entender, ele indicará se sua estimativa é maior ou menor que o número armazenado.

# Define as exceções definidas pelo usuário do Python
class Error(Exception):
   """Classe base para outras exceções"""
   pass
class ValueTooSmallError(Error):
   """Lançada quando o valor de entrada é muito pequeno"""
   pass
class ValueTooLargeError(Error):
   """Lançada quando o valor de entrada é muito grande"""
   pass
# Nosso programa principal
# O usuário adivinhar um número, até que ele/até que ela acerte
# Você precisa adivinhar esse número
number = 10
while True:
   try:
       i_num = int(input("Insira um número: "))
       if i_num < number:
           raise ValueTooSmallError
       elif i_num > number:
           raise ValueTooLargeError
       break
   except ValueTooSmallError:
       print("Este valor é muito pequeno, tente novamente!")
       print()
   except ValueTooLargeError:
       print("Este valor é muito grande, tente novamente!")
       print()
print("Parabéns! Você acertou!")

Este é um exemplo de execução do programa.

Insira um número: 12
Este valor é muito grande, tente novamente!
Insira um número: 0
Este valor é muito pequeno, tente novamente!
Insira um número: 9
Este valor é muito pequeno, tente novamente!
Insira um número: 10
Parabéns! Você acertou!

Aqui, definimos uma classe base chamada Error.

Neste exemplo, definimos duas exceções adicionais (ValueTooSmallError e ValueTooLargeError) derivadas dessa classe. Este é o método padrão para definir exceções definidas pelo usuário em programação Python, mas você não está limitado a esse método.

Acesse esta página para obter mais detalhesComo lidar com exceções no Python.