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