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

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

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

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

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

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

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

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

Итоги урока

Методическая разработка «Инструкция raise в Python»

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

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

Просмотр содержимого документа
«Методическая разработка «Инструкция raise в Python»»

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

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













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

«Инструкция raise в Python»

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

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

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

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



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









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











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

2026 г.

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


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


Задачи:

1. Объяснить, что исключение — это объект (экземпляр класса).

2. Научить использовать raise для возбуждения исключений.

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

4. Продемонстрировать обработку исключений с сохранением их в переменную (except ... as e).

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


Исключение — это объект


В Python каждое исключение — это экземпляр класса, унаследованного от BaseException.


Пример создания:


exc = ValueError("Некорректное значение")

print(exc) # Некорректное значение

print(type(exc)) #

print(exc.args) # ('Некорректное значение',)



Атрибут args хранит все переданные при создании аргументы в виде кортежа. Само по себе создание объекта исключения не прерывает программу. Для этого нужно использовать raise.


Инструкция raise: как вызвать исключение


Ключевое слово raise возбуждает исключение, заставляя программу остановиться (если исключение не перехвачено).


Способы использования:


1. Возбудить исключение без сообщения


raise ValueError


2. С сообщением

raise ValueError("Недопустимое значение")


3. Через переменную

error = TypeError("Ошибка типа")

raise error


После raise программа немедленно прерывается, если исключение не обработано.


Пример:


raise NameError("Переменная не определена")

print("Эта строка не выполнится") # ← никогда не запустится



После raise можно указывать только объекты, наследующиеся от BaseException.

Попытка написать raise 42 вызовет ошибку:

TypeError: exceptions must derive from BaseException


Обработка исключений и доступ к объекту ошибки


Когда вы перехватываете исключение, вы можете получить сам объект ошибки с помощью конструкции as:


try:

int("привет")

except ValueError as e:

print(f"Тип: {type(e).__name__}") # ValueError

print(f"Сообщение: {e}") # invalid literal...

print(f"Аргументы: {e.args}") # ('invalid literal...',)


Это особенно полезно, когда вы обрабатываете несколько типов исключений одним блоком:


try:

data[100] # может быть IndexError или KeyError

except (IndexError, KeyError) as err:

print(f"Произошла ошибка: {err}")


Практическое применение raise


Валидация входных данных


class Person:

def __init__(self, name, age):

if not isinstance(name, str) or not name.strip():

raise ValueError("Имя должно быть непустой строкой")

if age

raise ValueError("Возраст не может быть отрицательным")

self.name = name

self.age = age


Защита от недопустимых операций


def sqrt(x):

if x

raise ValueError("Квадратный корень из отрицательного числа не определён")

return x 0.5


Повторное возбуждение исключения (raise без аргументов)


Иногда нужно записать ошибку в лог, но продолжить её распространение:


try:

risky_operation()

except ValueError as e:

log_error(f"Ошибка: {e}") # записываем в лог

raise # пробрасываем исключение дальше!


Внутри блока except ключевое слово raise без аргументов автоматически повторно вызывает текущее исключение.


Альтернатива (менее предпочтительная):


raise e # тоже работает, но теряется часть трассировки


Важно: raise без аргументов можно использовать только внутри except. Вне его — будет ошибка:

RuntimeError: No active exception to reraise


Заключение


1. Исключение — это объект, созданный на основе класса-исключения.

2. Инструкция raise возбуждает исключение и прерывает выполнение программы.

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

4. При обработке через except ... as e вы получаете полный доступ к объекту ошибки.

5. raise без аргументов внутри except позволяет пробросить исключение дальше — полезно для логирования.

6. raise — мощный инструмент для контроля над логикой программы и защиты от некорректных данных.


Освоив raise, вы получаете контроль не только над обработкой ошибок, но и над их инициацией — это признак зрелого программиста, который проектирует не просто работающий, а надёжный и защищённый код.


Проверь себя


1. Что произойдёт, если написать raise 123?

2. Как получить текст сообщения из перехваченного исключения?

3. Зачем использовать raise без аргументов внутри except?

4. Можно ли вызвать raise вне блока except без указания исключения?

5. Как проверить, является ли объект экземпляром ValueError?

6. Где хранятся аргументы, переданные при создании исключения?

7. Приведи пример, когда raise используется для валидации данных.