Введение
Добро пожаловать в Арканный Академический Колледж Эк셉шнального Кодирования - престижный учебное заведение, где собираются только самые способные мастера кодирования, чтобы отточить свои навыки. Вы - молодой маг, который недавно поступил в академию и попал в мир волшебных алгоритмов и сложных заклинаний, где всегда предстоит новая задача.
Ваше путешествие начинается под руководством Мастера Питхо, известного Компетиторского Мастера Заклинания, который везде в магических мирах славится своими выдающимися способностями в решении задач и глубокими знаниями питоновской магии. В Академии каждый маг должен изучить искусство заклинания, но то, что делает магов действительно сильными, - это способность предвидеть и управлять непредвиденным.
Сегодня Мастер Питхо научит вас древнему искусству Генерации Исключений - фундаментальной навыке для любого начинающего мага, позволяющего контролировать ход магии (кода) и создавать безопасные резервы от неожиданных ошибок, которые могут возникнуть во время заклинания (программирования).
Цель этого Лаба - научить вас писать надежный питоновский код, способный правильно обрабатывать и генерировать исключения, обеспечивая тем самым, чтобы ваши заклинания (программы) были не только мощными, но и устойчивыми и безопасными. Приготовьтесь, так как вы собираетесь отправиться в волшебное путешествие по миру питоновского Генерирования Исключений!
Основы понимания исключений
В этом разделе вы узнаете о основах исключений в Python. Исключение в Python - это неожиданное событие, которое прерывает последовательность выполнения программы. Когда Python сталкивается с ошибкой, он останавливает текущий процесс и передает его по стеку вызовов, пока оно не будет обработано. Если обработка не происходит, программа завершается с ошибкой, и Python выводит сообщение об ошибке.
Для имитации ситуации, при которой может возникнуть исключение, вы создадите простой Python-скрипт, который пытается произнести заклинание (выполнить деление), которое завершается ошибкой.
Откройте файл с именем spellcasting.py в каталоге ~/project с содержанием:
## spellcasting.py
def divide_potions(potions, wizards):
return potions / wizards
## An attempt to divide potions among zero wizards, which will raise an exception.
divide_potions(10, 0)
Запустите скрипт с помощью команды:
python3 ~/project/spellcasting.py
Вы увидите, что Python генерирует исключение ZeroDivisionError. В следующем разделе вы узнаете, как правильно обработать это исключение:
Traceback (most recent call last):
File "/home/labex/project/spellcasting.py", line 7, in <module>
divide_potions(10, 0)
File "/home/labex/project/spellcasting.py", line 4, in divide_potions
return potions / wizards
ZeroDivisionError: division by zero
Генерация собственных исключений
Пришло время перейти к более продвинутой технике заклинания - генерации собственных исключений. Это позволяет создавать и использовать собственные сообщения об ошибках, делая ваши заклинания более гибкими и контролируемыми.
В этом разделе вы измените скрипт spellcasting.py, чтобы генерировать собственное исключение Exception, когда передается неправильное количество магicians в функцию divide_potions.
Во - первых, измените функцию divid_potions в spellcasting.py соответственно:
## spellcasting.py
def divide_potions(potions, wizards):
if wizards == 0:
raise Exception("Нельзя разделить зелья между нулевым количеством магicians!")
return potions / wizards
## Попробуйте снова разделить зелья с намеренной ошибкой.
divide_potions(20, 0)
После сохранения изменений запустите снова измененный скрипт:
python3 ~/project/spellcasting.py
На этот раз Python сгенерирует собственное сообщение об исключении Exception:
Traceback (most recent call last):
File "/home/labex/project/spellcasting.py", line 7, in <module>
divide_potions(20, 0)
File "/home/labex/project/spellcasting.py", line 3, in divide_potions
raise Exception("Нельзя разделить зелья между нулевым количеством магicians!")
Exception: Нельзя разделить зелья между нулевым количеством магicians!
Обработка исключений с использованием try-except
В этом разделе вы узнаете, как优雅но обрабатывать исключения с использованием блока try-except. Это важный навык для мага, позволяющий обеспечить восстановление заклинания (программы) в случае ошибок.
Добавьте блок try-except вокруг вызова функции divide_potions в скрипте spellcasting.py:
## spellcasting.py
def divide_potions(potions, wizards):
if wizards == 0:
raise Exception("Нельзя разделить зелья между нулевым количеством магicians!")
return potions / wizards
try:
## Попробуйте разделить зелья и обработайте возможные ошибки.
result = divide_potions(30, 0)
print(f"Каждый маг получает {result} зелий.")
except Exception as e:
print(f"Заклинание не удалось: {e}")
Запустите это в оболочке:
python3 ~/project/spellcasting.py
Теперь, при запуске скрипта вместо аварийного завершения он выведет:
Заклинание не удалось: Нельзя разделить зелья между нулевым количеством магicians!
Резюме
В этом Лабе мы отправились в волшебный мир Генерации Исключений в Python. Начали мы с ознакомления с исключениями, создав ситуацию, в которой они возникают естественным образом, затем узнали, как создавать собственные исключения и сообщения, и, наконец, завершили с искусством обработки этих исключений, не допуская, чтобы наше заклинание (программа) было прервано.
Теперь вы освоили основы генерации и обработки исключений в Python, навык, который无疑 будет вам полезен в вашем путешествии как мага по кодированию. Это не только способствует надежности и удобству использования ваших программ, но и учит вас предвидеть и готовиться к непредвиденным поведениям, делая ваши заклинания идеальными и вашу силу мага непобедимой.
Пусть код будет с вами, молодой колдун.



