我想在不退出的情况下捕获并记录异常,例如,
try:
do_stuff()
except Exception as err:
print(Exception, err)
# I want to print the entire traceback here,
# not just the exception name and details
我想打印在没有 try/except 拦截异常的情况下引发异常时打印的完全相同的输出,并且我 不 希望它退出我的程序。
原文由 chriscauley 发布,翻译遵循 CC BY-SA 4.0 许可协议
其他一些答案已经指出了 回溯 模块。
请注意
print_exc
,在某些极端情况下,您将无法获得预期的结果。在 Python 2.x 中:…将显示 最后一个 异常的回溯:
如果您确实需要访问原始 _回溯_, 一种解决方案是将从
exc_info
返回的 异常信息 缓存在局部变量中,并使用print_exception
显示它:制作:
虽然这有一些陷阱:
sys_info
的文档:另一方面,通过允许您访问 与异常关联 的回溯,Python 3 产生了一个不那么令人惊讶的结果:
… 将显示: