Вы парсите событие в словарь event. Что произойдёт при обращении event['currency'], если ключа currency в словаре нет?
AБудет выброшено исключение
ValueError, поскольку строковое значение ключа не подошло по форматуBБудет выброшено исключение
KeyError, поскольку запрошенного ключа нет в словаре eventCБудет выброшено исключение
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?Ещё вопросы по теме «Исключения и отладка»
- В обработчике данных используется конструкция `try`/`except`/`finally`. Внутри `try` произошла ошибка, она поймана в `except`. Что произойдёт с кодом в блоке `finally`?
- В отчёте вы считаете сумму и случайно складываете число и строку: `total + "10"`. Какое исключение наиболее вероятно?
- Скрипт получает список строк, но иногда он короче ожидаемого. Что произойдёт при обращении `rows[3]`, если в списке всего 3 элемента?
- Вы пишете функцию, которая внутри `try` делает `return`, а в `finally` закрывает ресурс (например, файл или соединение). Что произойдёт с кодом в `finally` при `return` из `try`?
- Вы преобразуете поле из CSV: `price = int(text)`. Иногда там встречается `'N/A'`. Какой вариант обработки лучше всего соответствует цели «ловить только ожидаемую ошибку, а не всё подряд»?
- Все вопросы по «Исключения и отладка» →