0Pricing
Python Academy · Урок

Разбор исключений

Узнайте, что такое исключения и как Python их вызывает.

«Разбор исключений» — бесплатный урок Python Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Python Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Python Academy содержит 4 уроков всего.

Введение

Исключения — это механизм Python для сигнализации об ошибках и их обработки во время выполнения программы.

Что такое исключение

Исключение — это событие, нарушающее обычный ход выполнения программы. Python возбуждает исключения при возникновении ошибок — например, при делении на ноль.
# 1 / 0  # raises ZeroDivisionError
print('exceptions demo')

Иерархия исключений

Все исключения наследуются от BaseException. Большинство исключений, предназначенных для обработки в программах, наследуются от Exception. Примеры конкретных типов: ValueError, TypeError, KeyError и другие.
print(issubclass(ValueError, Exception))
print(issubclass(Exception, BaseException))

Распространённые встроенные исключения

TypeError: неверный тип. ValueError: правильный тип, но неверное значение. KeyError: отсутствует ключ словаря. IndexError: индекс списка выходит за допустимый диапазон. AttributeError: такого атрибута нет.
# Examples:
# int('abc')       -> ValueError
# d['missing']     -> KeyError
# [1,2][9]         -> IndexError
print('common exceptions')

Трассировка вызовов

Если исключение не обработано, Python выводит трассировку вызовов: стек вызовов снизу вверх — от самого последнего вызова к самому первому. Научитесь её читать.
def f(): return 1/0
# f()  # shows traceback
print('traceback demo')

Объект исключения

Каждое исключение содержит сообщение. str(e) или e.args возвращает его описание. Внутри except к исключению можно обратиться так: except ValueError as e.
try:
    int('abc')
except ValueError as e:
    print(type(e).__name__, e)

Перехват нескольких типов

except (TypeError, ValueError): перехватывает исключения обоих типов в одной конструкции.
def parse(x):
    try:
        return int(x)
    except (TypeError, ValueError):
        return None
print(parse('abc'), parse(None))

Группа исключений (3.11+)

В Python 3.11 появилась ExceptionGroup для нескольких исключений, возникающих одновременно; обрабатывается она с помощью синтаксиса except*.
# Python 3.11+:
# try: ...
# except* ValueError as eg:
#     print(eg.exceptions)
print('exception group demo')

Предупреждения и исключения

import warnings; warnings.warn('msg') выдаёт предупреждение, не возбуждая исключение. Используйте это для устаревших возможностей и некритичных ошибок.
import warnings
warnings.warn('This is deprecated', DeprecationWarning)
print('warning issued')

sys.exc_info()

Внутри блока except функция sys.exc_info() возвращает (type, value, traceback) — это полезно для журналирования полной информации об исключении.
import sys
try:
    1/0
except:
    exc_type, exc_val, _ = sys.exc_info()
    print(exc_type, exc_val)

Цепочка исключений

raise NewError('msg') from original связывает исключения в цепочку. Атрибут __cause__ связывает их между собой.
try:
    int('abc')
except ValueError as e:
    raise RuntimeError('parse failed') from e

Быстрая проверка

Какое исключение возбуждается при обращении к словарю по несуществующему ключу?

Итоги

Исключения наследуются от BaseException. Читайте трассировку вызовов снизу вверх. Перехватывайте исключения с помощью except as e. Распространённые типы: ValueError, TypeError, KeyError, IndexError и AttributeError.

Продолжайте обучение

Отличная работа! Перейдите к следующему уроку, чтобы продолжить обучение.

Часто задаваемые вопросы

Урок «Разбор исключений» бесплатный?

Да — полный текст урока «Разбор исключений» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Python Academy, подпишись на CoddyKit PRO. Курс Python Academy содержит 4 уроков всего.

Чему я научусь в уроке «Разбор исключений»?

Узнайте, что такое исключения и как Python их вызывает. Ты практикуешь Python Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Python Academy?

Предыдущий опыт не требуется. Python Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.

Сколько времени занимает урок «Разбор исключений»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Python Academy?

Да. Каждый урок Python Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Разбор исключений
  2. try / except / else / finally
  3. Вызов и повторный вызов исключений
  4. Пользовательские классы исключений
← Назад к Python Academy