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