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