Вы получили traceback, в нём несколько строк вида File '...', line .... Какой фрагмент обычно указывает на место, где исключение реально возникло?
AСамая первая строка
Traceback (most recent call last) в начале вывода ошибкиBСамая верхняя строка
File ... line ... в списке фреймов сразу под заголовкомCЛюбая строка
File ... line ... подходит одинаково, кадры стека равнозначны при разбореDСамая нижняя строка
File ... line ... непосредственно перед строкой типа исключенияПравильный ответ. В traceback место возникновения исключения чаще всего видно в нижнем фрейме стека вызовов.
Разбор
Traceback показывает стек вызовов от внешнего к внутреннему, поэтому «внизу» обычно находится строка кода, где ошибка действительно произошла, а выше — цепочка вызовов, которая к ней привела. Это помогает быстро перейти к нужной строке и проверить значения и типы переменных рядом с ошибкой. Верхняя строка «Traceback (most recent call last)» — это просто заголовок, а не место сбоя.
Проверь себя · 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`?
- Все вопросы по «Исключения и отладка» →