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

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

Разбор

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

Проверь себя · 1/3разбор после ответа
В ноутбуке аналитик написал except Exception: pass, чтобы «не падало». Почему это считается плохой практикой, если цель — быстро диагностировать проблемы?
Тренировать Python в Telegram

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