Вы получили traceback. В нём несколько строк вида File '...', line .... Какой фрагмент обычно указывает на место, где исключение реально возникло?
AПервая строка traceback:
Traceback (most recent call last).BСамая верхняя строка
File ... line ... (в начале списка фреймов).CЛюбая строка
File ... line ..., они все равнозначны.DСамая нижняя строка
File ... line ... непосредственно перед строкой с типом исключения (например, ValueError: ...).Правильный ответ. В traceback место возникновения исключения чаще всего видно в нижнем фрейме стека.
Разбор
Traceback показывает стек вызовов: от внешнего к внутреннему. Поэтому «внизу» обычно находится строка кода, где ошибка действительно произошла, а выше — цепочка вызовов, которая к ней привела. Это помогает быстро перейти к нужной строке и проверить значения/типы переменных рядом с ошибкой.
Проверь себя · 1/3разбор после ответа
В отчёте вы считаете сумму и случайно складываете число и строку:
total + "10". Какое исключение наиболее вероятно?Ещё вопросы по теме «Исключения и отладка»
- В обработчике данных вы используете конструкцию `try`/`except`/`finally`. Внутри `try` происходит ошибка, она поймана в `except`. Что произойдёт с кодом в `finally`?
- Вы парсите событие в словарь `event`. Что произойдёт при обращении `event["currency"]`, если ключа `currency` в словаре нет?
- В отчёте вы считаете сумму и случайно складываете число и строку: `total + "10"`. Какое исключение наиболее вероятно?
- Скрипт получает список строк, но иногда он короче ожидаемого. Что произойдёт при обращении `rows[3]`, если в списке всего 3 элемента?
- Вы пишете функцию, которая внутри `try` делает `return`, а в `finally` закрывает ресурс (например, файл или соединение). Что произойдёт с кодом в `finally` при `return` из `try`?
- Все вопросы по «Исключения и отладка» →