Вы пишете функцию def get_user(user_id): ... и ожидаете, что user_id — число. Если кто-то передал строку '42', какое исключение обычно уместнее поднять, чтобы явно сообщить о неверном типе входных данных?

AПоднять ValueError('bad type'): применяется при допустимом типе, но недопустимом значении
BПоднять TypeError('user_id must be int'): стандартный сигнал о несовпадении типа аргумента
CПоднять KeyError('user_id'): исключение для отсутствующего ключа в словаре или mapping
DПоднять IndexError('user_id'): исключение при выходе за границы последовательности
Правильный ответ. Неверный тип аргумента — частый случай для TypeError; неверное значение при корректном типе — для ValueError.

Разбор

Разделяйте причины ошибок: если аргумент пришёл не того типа (строка вместо числа), это проблема типа и уместен TypeError. Если тип правильный, но значение недопустимо (например, отрицательное число там, где нельзя), используют ValueError. KeyError поднимают при отсутствующем ключе в словаре, IndexError — при выходе за границы последовательности; для проверки типа аргумента ни то, ни другое не подходит.

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

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