Рубрики
Без рубрики

Python Custom Исключение – Как создавать пользовательские исключения в Python?

Python Custom Исключение, Python Riss Exception, Python Perress, кроме исключения, Python Create Create Class Exception, исключение для броска Python, исключение

Автор оригинала: 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.