Исключения: как и зачем ловить
Иногда ошибка — не баг, а ожидаемая ситуация (неверный ввод). Такие ошибки ловят через try/except, чтобы программа не падала.
Зачем ловить
Некоторые ошибки предсказуемы: пользователь ввёл текст вместо числа, файла нет на месте. Если их не обработать, программа аварийно завершится. try/except позволяет перехватить ошибку и продолжить работу разумно.
Как это выглядит
Код, который может дать ошибку, помещают в блок try. Если ошибка возникла, управление переходит в except, где вы её обрабатываете — например, просите ввести данные заново.
try:
age = int(input('Возраст: '))
except ValueError:
print('Введите число!')
Ловите конкретное
Указывайте тип ошибки (ValueError, FileNotFoundError), а не перехватывайте всё подряд. Слишком широкий except скроет настоящие баги. Обрабатывайте только то, что действительно ожидаете, — остальное пусть проявится.
Частые вопросы
Ловить все ошибки одним except — плохо? Да, так можно спрятать реальные баги; ловите конкретные типы.
Исключение — это всегда плохо? Нет, часто это нормальная ожидаемая ситуация, которую вы обрабатываете.
Начать игру бесплатно