Python中java的printStackTrace()等价方法

25 投票
3 回答
14503 浏览
提问于 2025-04-17 05:02

在Python的异常处理部分,我想打印错误信息,但又不想让程序停止运行。我明白我需要做类似下面这样的事情:

try:
    1/0
except: 
    print errorMessage

在异常处理的部分,我想放一些类似Java中printStackTrace()的东西。

3 个回答

2

你还可以使用 logging.exception 这个功能,它来自 logging 模块。这个功能会把当前出现的错误信息和调用记录打印到默认的日志中,并标记为 ERROR 级别的信息。

链接:http://docs.python.org/2/library/logging.html#logging.Logger.exception

3

如果你只是想要错误信息,可以直接打印出错误(注意我在except中指定了异常类型,这是一种好的编程习惯,关于捕获错误的建议可以参考pep8)。

try:
    1/0
except Exception as e:
    print e

不过,如果你想要查看堆栈跟踪信息,就像@Eddified在评论中提到的,你可以参考这个答案中的例子。或者更具体地说,针对你的情况:

import traceback
try:
    1/0
except Exception as e:
    print e
    traceback.print_stack()
38

你可以看看 traceback.print_exc() 以及 traceback 模块的其他内容。

import traceback

try:
    1/0
except:
    print '>>> traceback <<<'
    traceback.print_exc()
    print '>>> end of traceback <<<'

traceback 文档页面的最后,还有一些更多的例子 可以参考

撰写回答