СДЕЛАЙТЕ СВОИ УРОКИ ЕЩЁ ЭФФЕКТИВНЕЕ, А ЖИЗНЬ СВОБОДНЕЕ

Благодаря готовым учебным материалам для работы в классе и дистанционно

Скидки до 50 % на комплекты
только до 17.07.2025

Готовые ключевые этапы урока всегда будут у вас под рукой

Организационный момент

Проверка знаний

Объяснение материала

Закрепление изученного

Итоги урока

Методическая разработка «Распространение исключений в Python»

Категория: Информатика

Нажмите, чтобы узнать подробности

Просмотр содержимого документа
«Методическая разработка «Распространение исключений в Python»»

МУНИЦИПАЛЬНОЕ АВТОНОМНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ДОПОЛНИТЕЛЬНОГО ОБРАЗОВАНИЯ

«ЦЕНТР ДЕТСКОГО ТЕХНИЧЕСКОГО ТВОРЧЕСТВА»













Методическая разработка

«Распространение исключений в Python»

к дополнительной общеобразовательной

общеразвивающей программе

технической направленности

«Программирование на Python»



Возраст детей: 10-17 лет









Автор: Костычев Вадим Александрович











г. Заречный Пензенской области

2025 г.

Данный материал предназначен для преподавателей информатики, программирования и студентов (учащихся), изучающих язык программирования Python. Он может быть использован как на лекциях, так и при проведении практических занятий или самостоятельной работе.


Цель: формирование у обучающихся понимания механизма распространения исключений в стеке вызовов функций, а также развитие навыков написания программ с правильной передачей ошибок между уровнями программы.


Задачи:

  1. Объяснить, что такое распространение исключений.

  2. Показать, как исключения передаются от одной функции к другой.

  3. Научить правильно использовать try...except в разных уровнях вызова.

  4. Развить навыки проектирования кода с учётом обработки ошибок.

  5. Подготовить обучающихся к созданию сложных программ с несколькими уровнями вложенности.


Что такое распространение исключений?


В Python, если исключение возникает внутри функции и не обрабатывается внутри этой функции, оно передаётся выше по стеку вызовов, то есть вызывающей функции. Этот процесс называется распространением исключения (exception propagation).

Если ни одна из функций не перехватывает исключение — программа завершает выполнение и выводит traceback.


Пример 1: Простое распространение исключения


def divide(a, b):

return a / b


def calculate():

result = divide(10, 0)

print(result)


calculate()


Ошибка:


ZeroDivisionError: division by zero


Здесь исключение возникает в divide, но не обрабатывается, поэтому оно распространяется в calculate, а затем выходит за пределы программы.


Пример 2: Обработка исключения на верхнем уровне


def divide(a, b):

return a / b


def calculate():

result = divide(10, 0)

print(result)


try:

calculate()

except ZeroDivisionError:

print("Ошибка: деление на ноль")


Вывод:


Ошибка: деление на ноль


Теперь исключение, возникшее глубоко в стеке, было поймано на более высоком уровне.


Пример 3: Локальная обработка исключения


def divide(a, b):

try:

return a / b

except ZeroDivisionError:

print("Нельзя делить на ноль!")


def calculate():

result = divide(10, 0)

print("Результат:", result)


calculate()


Вывод:


Нельзя делить на ноль!

Результат: None


Здесь исключение поймано внутри функции divide , и дальнейшее выполнение программы продолжается.


Задание 1: Исследование стека вызовов


Имеется следующий код:


def func_a():

x = int(input("Введите число: "))

return 10 / x


def func_b():

result = func_a()

print("Результат:", result)


def main():

try:

func_b()

except ValueError:

print("Ошибка: введите число")


main()


Вопросы:

  1. Какие исключения могут возникнуть в этом коде?

  2. Где они обрабатываются?

  3. Что произойдёт, если пользователь введёт 0?

  4. Как изменить код, чтобы обработать ZeroDivisionError?


Задание 2: Обработка ошибок в модульной структуре


Представьте, что у вас есть несколько модулей:

  • math_utils.py

  • user_interface.py

  • main.py


math_utils.py


def divide(a, b):

return a / b


user_interface.py


from math_utils import divide


def get_input():

a = float(input("Число A: "))

b = float(input("Число B: "))

result = divide(a, b)

print("Результат:", result)


main.py


from user_interface import get_input


try:

get_input()

except Exception as e:

print("Произошла ошибка:", str(e))


Вопросы:

  1. Где возникает исключение?

  2. Кто его обрабатывает?

  3. Можно ли обработать разные типы ошибок по-разному?


Упражнения для самостоятельного выполнения

  1. Напишите программу с тремя уровнями вложенных функций, где ошибка возникает в самой нижней, но обрабатывается в самой верхней.

  2. Создайте программу, которая читает данные из файла через цепочку функций. Используйте try...except только в главной функции.

  3. Реализуйте систему ввода данных пользователя, обработки и вывода результата, используя механизм распространения исключений.


Контрольные вопросы

  1. Что такое распространение исключений?

  2. Почему важно понимать, как исключения передаются между функциями?

  3. Может ли исключение быть обработано на любом уровне программы?

  4. Чем отличается локальная обработка от централизованной?

  5. Как влияет распространение исключений на структуру программы?



Скачать

Рекомендуем курсы ПК и ППК для учителей

Вебинар для учителей

Свидетельство об участии БЕСПЛАТНО!