概述
e.printStackTrace equivalent in python
在Java中,这将执行以下操作(docs):public void printStackTrace()
Prints this throwable and its backtrace to the standard error stream...
它的用法如下:try
{
// code that may raise an error
}
catch (IOException e)
{
// exception handling
e.printStackTrace();
}
在Java中,标准错误流是无缓冲的,因此输出会立即到达。
Python 2中的相同语义是:import traceback
import sys
try: # code that may raise an error
pass
except IOError as e: # exception handling
# in Python 2, stderr is also unbuffered
print >> sys.stderr, traceback.format_exc()
# in Python 2, you can also from __future__ import print_function
print(traceback.format_exc(), file=sys.stderr)
# or as the top answer here demonstrates, use:
traceback.print_exc()
# which also uses stderr.
Python3
在Python 3中,我们可以直接从exception对象获得回溯(这可能对线程化代码的性能更好)。
还有,stderr is line-buffered,但是print函数得到
一个flush参数,因此这将立即打印到stderr:print(traceback.format_exception(None, #
e, e.__traceback__),
file=sys.stderr, flush=True)
结论:
因此,在Python 3中,traceback.print_exc(),尽管它使用sys.stderrby default,但是会缓冲输出,并且可能会丢失输出。因此,为了获得尽可能等效的语义,在Python 3中,将print与flush=True一起使用。
最后
以上就是俭朴刺猬为你收集整理的python stacktrace,e、 python中的printStackTrace等价物的全部内容,希望文章能够帮你解决python stacktrace,e、 python中的printStackTrace等价物所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复