Что такое обратная трассировка (traceback) в Python?
Обратная трассировка (traceback) в Python – это отчет об ошибке, который показывает путь выполнения программы до места возникновения исключения. Разберем, из чего состоит traceback и как быстро найти в нем причину ошибки.
Что такое обратная трассировка?
Обратная трассировка (traceback) – это отчет, который Python формирует при возникновении необработанного исключения. Он показывает последовательность вызовов, которая привела программу к ошибке, место ее возникновения и тип исключения.
Например:
Traceback (most recent call last):File "main.py", line 5, in <module>total = calculate_price("пять")File "main.py", line 3, in calculate_pricereturn price + quantityTypeError: unsupported operand type(s) for +: 'int' and 'str'
Несмотря на объем сообщения, читать его достаточно просто.
Последняя строка содержит тип ошибки и сообщение о ней:
TypeError: unsupported operand type(s) for +: 'int' and 'str'
В данном случае Python сообщает, что программа попыталась выполнить операцию сложения для несовместимых типов данных – целого числа (int) и строки (str).
Строки выше показывают, как программа пришла к месту возникновения ошибки. В них указываются имя файла, номер строки и выполнявшийся фрагмент кода.
Поэтому при появлении traceback удобно действовать снизу вверх:
- прочитать последнюю строку и определить тип ошибки;
- посмотреть сообщение об ошибке;
- найти указанный файл и номер строки;
- проверить эту строку и вызовы, которые привели к ней.
Сам traceback не является ошибкой. Это диагностическая информация, которую Python предоставляет разработчику, чтобы помочь найти причину возникшего исключения.
Хотите подробнее разобраться, как читать сообщения об ошибках Python и находить причину сбоя? Читайте материал «Красный текст – не приговор. Как читать ошибки в Python и перестать их бояться», где на примерах разобраны структура traceback и распространенные типы ошибок.
Статья подготовлена в рамках образовательных проектов KHRAMOVD.LAB. Есть вопросы по Python? Задавайте их на нашу почту: khramovde@statandcyb.ru
← Все статьи