Python 我们可以从异常中获取堆栈跟踪吗?

Python 我们可以从异常中获取堆栈跟踪吗?,python,Python,要获取stacktrace,我使用: except: import traceback print(traceback.format_exec()) 我可以不使用回溯从异常中获取stacktrace吗?例如: except Exception as e: print(e) print(e.traceback) #is there command like this? 您需要回溯。您可以将其与e一起使用。您应该在代码开始时导入它,而不需要每次发生异常时都导入它

要获取stacktrace,我使用:

except:
    import traceback
    print(traceback.format_exec())
我可以不使用回溯从异常中获取stacktrace吗?例如:

except Exception as e:
    print(e)
    print(e.traceback) #is there command like this?

您需要
回溯
。您可以将其与
e
一起使用。您应该在代码开始时导入它,而不需要每次发生异常时都导入它

import traceback

try:
    ...
except Exception as e:
    tb = traceback.format_exc()
    print(e)
    print(tb)

您需要
回溯
。您可以将其与
e
一起使用。您应该在代码开始时导入它,而不需要每次发生异常时都导入它

import traceback

try:
    ...
except Exception as e:
    tb = traceback.format_exc()
    print(e)
    print(tb)

使用回溯模块-可在此处找到更多信息:

或者先将其保存为变量,如下所示:

except Exception as e:
    print(e)
    st = traceback.format_stack()
    print(st)

使用回溯模块-可在此处找到更多信息:

或者先将其保存为变量,如下所示:

except Exception as e:
    print(e)
    st = traceback.format_stack()
    print(st)

如果不使用回溯模块,我们应该能够使用sys.exc_info获得更多详细信息。这将返回包含回溯信息的元组:

try:
    ...
except Exception as e:
    tb = sys.exec_info()[2]
    ...
回溯对象包含有关发生错误的堆栈帧和行号的信息


这就是追溯在引擎盖下的用途。

如果不使用追溯模块,我们应该能够使用sys.exc_info获得更多详细信息。这将返回包含回溯信息的元组:

try:
    ...
except Exception as e:
    tb = sys.exec_info()[2]
    ...
回溯对象包含有关发生错误的堆栈帧和行号的信息


这就是回溯在引擎盖下的用途。

为什么异常对象没有堆栈跟踪?@它有:
e.\uuuu traceback\uuuu
。但是作为所有
\uuuu dunder\uuuu
名称的规则,这些名称保留供内部使用,您的代码不应该依赖它们(可以在不反对的情况下更改/删除它们)。
traceback
模块是一种方法。为什么异常对象没有堆栈跟踪?@它有一个变量:
e.\uu traceback\uu
。但是作为所有
\uuuu dunder\uuuu
名称的规则,这些名称保留供内部使用,您的代码不应该依赖它们(可以在不反对的情况下更改/删除它们)。
traceback
模块就是一条出路。