Представьте страховку. Вы садитесь за руль, надеясь, что всё пройдёт гладко (try), но если что-то пойдёт не так — авария — страховка покрывает ущерб, и жизнь продолжается (except). Без страховки любая мелкая авария «обрушила» бы всё. Блок try / except — это и есть страховка для кода: рискованное действие пробуем, а на случай ошибки заранее готовим план Б.
Что такое исключение
Когда Python натыкается на ошибку во время работы — деление на ноль, обращение к несуществующему ключу, неверное преобразование — он возбуждает исключениеСигнал об ошибке во время выполнения. Его можно перехватить блоком try/except.. Если его не обработать, программа аварийно завершается с трейсбеком.
Чтобы программа продолжила работу, ошибку ловят блоком try / except.
▶ try-except.py
Как это читается
try: — «рискованный» код, который может сломаться.
except ValueError: — что делать, если возникла ошибка именно этого типа.
После обработки программа спокойно идёт дальше — не падает.
Частые типы исключений
Исключение
Когда возникает
ValueError
неверное значение: int("abc")
TypeError
неподходящий тип: "a" + 5
KeyError
нет ключа в словареКоллекция пар «ключ → значение»: {"a": 1}. Быстрый доступ по ключу. По-английски dict.
IndexError
индексНомер позиции элемента в последовательности. В Python нумерация с нуля: первый элемент — индекс 0. за пределами спискаИзменяемая упорядоченная коллекция элементов: [1, 2, 3]. По-английски list.
ZeroDivisionError
деление на ноль
▶ multi-except.py
⚠️Осторожно
Не ловите ошибки «вслепую» через голый except: без указания типа — так вы спрячете и опечатки, и логические баги. Ловите конкретные исключения, которые ожидаете.
💡Совет
🔮 Предскажите вывод
Если в try возникает ошибка, оставшиеся строкиТекстовое значение в кавычках: "привет". Неизменяема. По-английски string (str). внутри tryпропускаются — управление сразу прыгает в except. Что выведет код ниже?
▶ predict-except.py
Ответ — шаг 1, шаг 3, шаг 4. Строка «шаг 2» не печатается: как только на 10 / 0 возникло исключение, Python бросает остаток try и переходит в except. После обработки программа спокойно идёт дальше — печатает «шаг 4».
⚠️ Частые ошибки новичков
Частая ошибка — ловить не тот тип исключения. Если ожидать KeyError, а реально возникнет ZeroDivisionError, то except не сработает и программа всё равно упадёт. Запустите код, посмотрите тип ошибки в трейсбеке и почините тип в except.
▶ broken-except.py
Заданиерешение.py
Напишите функцию to_int(s): она пытается преобразовать строку s в число через int() и вернуть его. Если преобразовать нельзя — верните 0 (поймайте ValueError).
Заданиерешение.py
Доп. задача. Напишите safe_get(d, key): возвращает d[key], а если такого ключа нет — ловит KeyError и возвращает строку "нет данных".
❓Проверь себя
Что произойдёт после успешной обработки исключения в except?
Какое исключение возникнет при int('abc')?
Почему голый except: без типа считается плохой практикой?
Комментарии
Загрузка…
Загрузка комментариев…