Введение
В этом практическом занятии (лабораторной работе) вы научитесь проверять, было ли возбуждено исключение в Python. Лабораторная работа сосредоточена на понимании исключений и использовании блоков try-except для перехвата и обработки их, предотвращая аварийное завершение программы.
Вы начнете с создания Python-скрипта, который возбуждает исключение ZeroDivisionError. Затем вы научитесь использовать блок try-except для перехвата этого исключения и его корректной обработки, что позволит вашей программе продолжать работу.
Понимание исключений
На этом этапе вы узнаете о исключениях в Python. Исключения - это события, которые возникают во время выполнения программы и нарушают нормальный поток инструкций. Понимание исключений является важным аспектом при написании надежного и устойчивого к ошибкам Python-кода.
Когда в Python происходит ошибка, возбуждается исключение. Если исключение не обработано, программа завершится и выведет сообщение об ошибке. Однако, используя блоки try-except, вы можете перехватывать и обрабатывать исключения, предотвращая аварийное завершение программы.
Начнем с простого примера, который возбуждает исключение:
Откройте редактор VS Code в среде LabEx.
Создайте новый файл с именем
division.pyв директории~/project.~/project/division.pyДобавьте следующий код в файл
division.py:numerator = 10 denominator = 0 result = numerator / denominator print(result)Этот код пытается разделить 10 на 0, что является недопустимой операцией и вызовет исключение
ZeroDivisionError.Запустите скрипт, используя следующую команду в терминале:
python division.pyВы увидите вывод, похожий на следующий:
Traceback (most recent call last): File "/home/labex/project/division.py", line 3, in <module> result = numerator / denominator ZeroDivisionError: division by zeroТрассировка стека показывает, что исключение
ZeroDivisionErrorпроизошло на строке 3 файлаdivision.py. Программа завершилась, так как исключение не было обработано.
Теперь давайте посмотрим, как обработать это исключение с использованием блока try-except.
Использование конструкции try-except для перехвата исключений
На этом этапе вы научитесь использовать блоки try-except для перехвата и обработки исключений в Python. Это позволяет вашей программе продолжать работу даже при возникновении ошибок.
Базовая структура блока try-except выглядит следующим образом:
try:
## Code that might raise an exception
except ExceptionType:
## Code to handle the exception
Код внутри блока try выполняется. Если возникает исключение типа ExceptionType, то выполняется код внутри блока except. Если исключение не возникает, блок except пропускается.
Давайте модифицируем файл division.py из предыдущего шага, чтобы обработать исключение ZeroDivisionError:
Откройте файл
division.pyв редакторе VS Code.Измените код, добавив блок
try-except:try: numerator = 10 denominator = 0 result = numerator / denominator print(result) except ZeroDivisionError: print("Error: Cannot divide by zero.")В этом коде блок
tryсодержит операцию деления, которая может вызвать исключениеZeroDivisionError. Блокexceptперехватывает исключениеZeroDivisionErrorи выводит сообщение об ошибке.Запустите скрипт, используя следующую команду в терминале:
python division.pyВы увидите следующий вывод:
Error: Cannot divide by zero.Вместо аварийного завершения программа теперь корректно обрабатывает исключение
ZeroDivisionErrorи выводит информативное сообщение.
Это демонстрирует, как блоки try-except можно использовать для предотвращения аварийного завершения программы из-за исключений.
Проверка типа исключения
На этом этапе вы узнаете, как проверить тип исключения и получить доступ к сообщению об исключении внутри блока except. Это позволяет обрабатывать разные типы исключений по-разному и выводить более информативные сообщения об ошибках.
Когда исключение перехвачено, вы можете присвоить его переменной в предложении except с использованием ключевого слова as:
try:
## Code that might raise an exception
except ExceptionType as e:
## Code to handle the exception
## 'e' is the exception object
Переменная e будет содержать объект исключения, который можно использовать для получения информации об исключении, например, его типа и сообщения.
Давайте модифицируем файл division.py, чтобы проверить тип исключения и вывести сообщение об исключении:
Откройте файл
division.pyв редакторе VS Code.Измените код, чтобы проверить тип исключения и вывести сообщение:
try: numerator = 10 denominator = 0 result = numerator / denominator print(result) except ZeroDivisionError as e: print(f"Error: {type(e).__name__} - {e}")В этом коде мы перехватываем исключение
ZeroDivisionErrorи присваиваем его переменнойe. Затем мы используемtype(e).__name__для получения имени типа исключения иeдля получения сообщения об исключении. Мы выводим оба значения в отформатированной строке.Запустите скрипт, используя следующую команду в терминале:
python division.pyВы увидите следующий вывод:
Error: ZeroDivisionError - division by zeroТеперь вывод содержит тип исключения (
ZeroDivisionError) и сообщение об исключении (division by zero).
Это позволяет предоставить более подробную информацию об ошибке, что упрощает отладку кода. Вы также можете использовать эту информацию для разного обработки разных типов исключений, обеспечивая более конкретную обработку ошибок для каждого случая.
Резюме
В этом практическом занятии (лабораторной работе) вы узнали о исключениях в Python, которые представляют собой события, нарушающие нормальный поток выполнения программы. Когда возникает ошибка, генерируется исключение, и если оно не обрабатывается, программа завершается аварийно.
Вы также научились использовать блоки try-except для перехвата и обработки исключений, предотвращая аварийное завершение программы. В практическом занятии был продемонстрирован случай исключения ZeroDivisionError и способ его обработки с помощью блока try-except.



