Изучение процесса обработки исключений
На этом этапе вы узнаете о обработке исключений в Python. Обработка исключений является важной частью написания надежного и устойчивого к ошибкам кода. Она позволяет вам элегантно обрабатывать ошибки, которые могут возникнуть во время выполнения программы, предотвращая ее аварийное завершение и обеспечивая более удобный для пользователя опыт.
Начнем с простого примера. Предположим, вы хотите разделить два числа, но второе число может быть равно нулю. Деление на ноль является неопределенной операцией и вызовет исключение ZeroDivisionError
в Python.
-
Откройте редактор VS Code в среде LabEx.
-
Создайте новый файл с именем division.py
в каталоге ~/project
.
touch ~/project/division.py
-
Отредактируйте файл division.py
и добавьте следующий код:
## division.py
numerator = 10
denominator = 0
result = numerator / denominator
print(result)
-
Запустите скрипт с помощью команды python
:
python ~/project/division.py
Вы увидите сообщение об ошибке, похожее на следующее:
Traceback (most recent call last):
File "/home/labex/project/division.py", line 4, in <module>
result = numerator / denominator
ZeroDivisionError: division by zero
Это сообщение об ошибке указывает, что произошло исключение ZeroDivisionError
, так как мы попытались разделить на ноль. Без обработки исключений программа завершается аварийно.
Теперь используем обработку исключений для элегантной обработки этой ошибки.
-
Измените файл division.py
, добавив блок try...except
:
## division.py
numerator = 10
denominator = 0
try:
result = numerator / denominator
print(result)
except ZeroDivisionError:
print("Error: Cannot divide by zero.")
В этом коде блок try
содержит код, который может вызвать исключение. Если в блоке try
возникает исключение ZeroDivisionError
, будет выполнен код в блоке except
.
-
Запустите скрипт еще раз:
python ~/project/division.py
Теперь вместо аварийного завершения программа выведет:
Error: Cannot divide by zero.
Это демонстрирует базовую структуру обработки исключений:
- Блок
try
заключает в себе код, который может вызвать исключение.
- Блок
except
указывает тип исключения, которое нужно поймать, и код, который будет выполнен, если это исключение возникнет.
Вы также можете ловить несколько типов исключений с помощью нескольких блоков except
:
## division.py
numerator = 10
denominator = "abc"
try:
result = numerator / int(denominator)
print(result)
except ZeroDivisionError:
print("Error: Cannot divide by zero.")
except ValueError:
print("Error: Invalid input. Please enter a number.")
В этом примере мы добавили обработчик исключения ValueError
. Если denominator
не может быть преобразован в целое число (например, если это строка, такая как "abc"), будет вызвано исключение ValueError
, и будет выполнен соответствующий блок except
.
Запустите скрипт:
python ~/project/division.py
Вывод:
Error: Invalid input. Please enter a number.
Обработка исключений позволяет вам писать более надежные и удобные для пользователя программы, предвидя и обрабатывая потенциальные ошибки.