Python中类似于Java的printStackTrace()方法的等效方法是什么?

25
在 Python 的 except 块中,我想打印错误消息但不希望程序停止执行,我知道我需要像这样做:
try:
    1/0
except: 
    print errorMessage

在 except 部分,我希望能够像 Java 的 printStackTrace() 一样打印出堆栈信息。


2
要打印堆栈跟踪而不引发异常,请参见:https://dev59.com/M2865IYBdhLWcg3wOb5h - Eddified
3个回答

38

查看 traceback.print_exc() 和其他traceback模块。

import traceback

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

traceback文档页面末尾,还有一些更多的例子


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()

提醒一下,print_stack 仅仅打印你当前所在代码行的堆栈信息,而 print_exc() 则打印异常的堆栈跟踪信息 - abelito

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接