Автор оригинала: Pankaj Kumar.
При создании приложений один из важных факторов – убедиться, что люди знают, что они получают читаемые сообщения об ошибках. Python позволяет определить пользовательские исключения. В этой статье мы обсудим, какие пользовательские исключения являются, как вы можете определить пользовательские исключения в Python, и каковы случаи использования пользовательских исключений. Давайте направимся в это!
Что такое пользовательское исключение в Python?
В Учебном погрузочному учебное пособие на погрузочному обеспечению Python мы обсуждали, что такое исключение. Теперь, почему вам нужно создать пользовательское исключение, когда Python дает вам исключения и сообщения об ошибках самостоятельно? Посмотрите на пример ниже:
В поле «Сообщение» говорится, что в коде есть синтаксическая ошибка. И это такие видные сообщения об ошибках, которые Python отображается даже пользователю, когда что-то выходит не так внутри кода.
Пользователь вашего приложения не будет точно знать, что произошло и как это исправить. И вот где добиваются ошибки и определение пользовательских сообщений об ошибках могут помочь своим пользователям точно знать, что они должны делать дальше, чтобы исправить ошибку.
Как определить пользовательские исключения в Python?
Теперь есть несколько способов создавать определенные пользовательские исключения в Python, и мы пройдем некоторые общие в этой статье.
1. Использование заявления Assert
Заявление ASSERT – это условное повторное повторное использование ключевое слово, которое позволяет проверить конкретные критерии для выполнения. Если условие не встречается, то он будет бросать AssertionError.
Давайте возьмем пример здесь. Если у вас есть программа, которая запрашивает возраст пользователя. И вы хотите убедиться, что пользователи в возрасте до 18 лет не входят в систему. Вы, очевидно, можете использовать состояние IF-Evel в Python.
Но чтобы показать вам пример, вот как вы выполняете то же действие и бросить ошибку с утверждением Assert.
def input_age(age): try: assert int(age) > 18 except ValueError: return 'ValueError: Cannot convert into int' else: return 'Age is saved successfully' print(input_age('23')) # This will print print(input_age(25)) # This will print print(input_age('nothing')) # This will raise ValueError which is handled print(input_age('18')) # This will raise AssertionError and the the program collapse print(input_age(43)) # This will not print
Выход следующей программы будет
Age is saved successfully Age is saved successfully ValueError: Cannot convert into int Traceback (most recent call last): File "/home/imtiaz/ExceptionHandling.py", line 13, in print(input_age('18')) # This will raise AssertionError the the program collapse File "/home/imtiaz/ExceptionHandling.py", line 3, in input_age assert int(age) > 18 AssertionError
2. Повышение исключения
Вы можете поднять существующее исключение, используя Поднять ключевое слово Отказ Итак, вы просто просто напишите поднять Ключевое слово, а затем имя исключения. Если мы изменим предыдущий код, мы получаем:
def input_age(age): try: if(int(age)<=18): raise ZeroDivisionError except ValueError: return 'ValueError: Cannot convert into int' else: return 'Age is saved successfully' print(input_age('23')) # This will execute properly print(input_age('18')) # This will not execute properly
Выход кода будет
Age is saved successfully Traceback (most recent call last): File "/home/imtiaz/ExceptionHandling.py", line 12, in print(input_age('18')) # This will not print File "/home/imtiaz/ExceptionHandling.py", line 4, in input_age raise ZeroDivisionError ZeroDivisionError
Хотя исключение не было связано с делением ноль, все равно мы его видим. Потому что мы подняли ZerodivisionError. Мы можем поднять любую ошибку, которую вы хотите с ключевым ключевым словами, как показано выше.
3. Класс исключения Python Custom
Зачем придерживаться методов по умолчанию? Чтобы создать пользовательский класс исключения в Python и определите сообщение об ошибке, необходимо получить ошибки из класса исключения напрямую.
В следующем примере мы создаем пользовательский класс исключения Несовершеннолетние
это происходит из исключения базового класса. Подобно тому, как мы работали в методе утверждения Assert, мы будем поднять ошибку, если минимальный возраст не выполнен.
class UnderAge(Exception): pass def verify_age(age): if int(age) < 18: raise UnderAge else: print('Age: '+str(age)) # main program verify_age(23) # won't raise exception verify_age(17) # will raise exception
И выход будет
Заключение
И это приводит нас к концу этого руководства по созданию пользовательских исключений в Python. В этой статье рассказывается о некоторых из наиболее распространенных способов построить пользовательские исключения пользователей, чтобы облегчить конечный пользователь понять, что пошло не так с программой и следующими шагами, которые они могут взять.
Чтобы обобщить статью, вот три метода, обсуждаемые здесь:
- Assert ключевое слово
- Поднять ключевое слово
- И пользовательские классы исключения
Ссылка: https://docs.cython.org/3/tuTorial/errors.html#User-defined-exceptions.