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