Вы преобразуете поле из CSV: price = int(text). Иногда там встречается N/A. Какой вариант обработки ошибки лучше соответствует цели «точечный except (не ловить всё подряд)»?
AИспользовать
except Exception: и в нём просто ставить price = 0.BИспользовать
except ValueError: и обработать только ожидаемую ошибку конвертации.CИспользовать
except: и в нём делать pass.DНе использовать
try/except, пусть скрипт падает всегда, даже если это ожидаемо.Правильный ответ. Ловите ожидаемые исключения конкретных типов, например
ValueError при int(...).Разбор
В аналитических пайплайнах часть ошибок ожидаема: например, плохие значения в полях. Но ловить всё подряд (except Exception:) опасно — можно скрыть баги в коде. Правильнее ловить конкретное исключение (ValueError для некорректного значения), чтобы обработка была контролируемой и отладка — проще.
Проверь себя · 1/3разбор после ответа
Вы парсите событие в словарь
event. Что произойдёт при обращении event["currency"], если ключа currency в словаре нет?Ещё вопросы по теме «Исключения и отладка»
- В обработчике данных вы используете конструкцию `try`/`except`/`finally`. Внутри `try` происходит ошибка, она поймана в `except`. Что произойдёт с кодом в `finally`?
- Вы парсите событие в словарь `event`. Что произойдёт при обращении `event["currency"]`, если ключа `currency` в словаре нет?
- В отчёте вы считаете сумму и случайно складываете число и строку: `total + "10"`. Какое исключение наиболее вероятно?
- Скрипт получает список строк, но иногда он короче ожидаемого. Что произойдёт при обращении `rows[3]`, если в списке всего 3 элемента?
- Вы пишете функцию, которая внутри `try` делает `return`, а в `finally` закрывает ресурс (например, файл или соединение). Что произойдёт с кодом в `finally` при `return` из `try`?
- Все вопросы по «Исключения и отладка» →