В коде есть два обработчика: except ValueError: и except Exception:. Почему порядок этих блоков except важен?

AПорядок не важен: Python всё равно выберет самый подходящий except.
Bexcept Exception: должен идти первым, чтобы «ускорить» обработку ошибок.
CБолее специфичные исключения (например, ValueError) должны идти раньше, иначе их перехватит более общий except Exception:.
DПорядок зависит только от версии Python и не имеет смысла.
Правильный ответ. Сначала пишут специфичные except, потом более общие, иначе логика обработки ломается.

Разбор

Python проверяет блоки except сверху вниз. Если поставить except Exception: раньше, он перехватит почти всё и до except ValueError: дело не дойдёт. Это ухудшает диагностику и приводит к неправильной обработке ошибок — нарушается цель «точечных except».

Проверь себя · 1/3разбор после ответа
Вы пишете функцию parse_age(age_text), которая должна принимать только неотрицательный возраст. Как лучше явно сообщить об ошибке входных данных, если пришло -5?
Тренировать Python в Telegram

Ещё вопросы по теме «Исключения и отладка»