Как напечатать трассировку стека объекта исключения в Python? - PullRequest
0 голосов
/ 10 октября 2018

Как напечатать трассировку стека объекта исключения в Python?

Обратите внимание, что вопрос НЕ в том, что трассировка стека LAST исключение.Объект исключения может быть сохранен в некоторый отдаленный момент времени в прошлом.

Ответы [ 2 ]

0 голосов
/ 10 октября 2018

вы можете вручную перебрать атрибут __traceback__ для печати строк и файлов:

def function():
    raise ValueError("flfkl")

try:
    function()
except Exception as e:
    traceback = e.__traceback__
    while traceback:
        print("{}: {}".format(traceback.tb_frame.f_code.co_filename,traceback.tb_lineno))
        traceback = traceback.tb_next
0 голосов
/ 10 октября 2018

Это немного неудобно, но вы можете использовать traceback.print_exception.С учетом исключения ex:

traceback.print_exception(type(ex), ex, ex.__traceback__)

Пример:

import traceback

try:
    1/0
except Exception as ex:
    traceback.print_exception(type(ex), ex, ex.__traceback__)

# output:
# Traceback (most recent call last):
#   File "untitled.py", line 4, in <module>
#     1/0
# ZeroDivisionError: division by zero
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...