Вы парсите событие в словарь event. Что произойдёт при обращении event['currency'], если ключа currency в словаре нет?

AБудет выброшено исключение ValueError, поскольку строковое значение ключа не подошло по формату
BБудет выброшено исключение KeyError, поскольку запрошенного ключа нет в словаре event
CБудет выброшено исключение TypeError, поскольку строка не является допустимым типом для ключа
DБудет выброшено исключение IndexError, поскольку индекс выходит за пределы коллекции event
Правильный ответ. При обращении к отсутствующему ключу словаря через dict[key] Python выбрасывает KeyError.

Разбор

При обращении к отсутствующему ключу через dict[key] Python выбрасывает KeyError. Если ключ может отсутствовать «по данным» (это ожидаемо), лучше использовать event.get('currency') или проверку if 'currency' in event:. Если ключ обязан быть, KeyError — полезный сигнал о нарушении контракта данных. ValueError относится к недопустимому значению, TypeError — к неподходящему типу, а IndexError бросают последовательности (списки, кортежи), а не словари.

Проверь себя · 1/3разбор после ответа
Вы поймали ошибку, залогировали её и хотите пробросить дальше, чтобы пайплайн упал и трейс сохранился. Что нужно сделать внутри except?
Тренировать Python в Telegram

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