java的printStackTrace()等效于python

时间:2011-10-26 10:05:53

标签: java python

在python除了块之外,我想打印错误信息,但我不希望程序停止执行,我明白我必须做这样的事情

try:
    1/0
except: 
    print errorMessage

在除了部分之外,我期待像java的printStackTrace()

这样的东西

3 个答案:

答案 0 :(得分:34)

查看traceback.print_exc()traceback模块的其余部分。

import traceback

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

还有一些例子towards the end of the traceback documentation page

答案 1 :(得分:3)

如果你真的只是想要错误信息,你可以只打印错误(请注意我如何在例外中指定例外 - 这是一个好的做法,请参阅pep8以获取有关捕获错误的建议):

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

但是,如果您想要stackstrace,正如@Eddified在评论中所说,您可以使用this answer中的示例。或者更具体地说是你的情况:

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

答案 2 :(得分:2)

您还可以使用logging.exception模块中的logging。它会将当前异常的堆栈跟踪作为严重性为ERROR的消息打印到默认记录器中。

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