我是靠谱客的博主 俭朴刺猬,最近开发中收集的这篇文章主要介绍python stacktrace,e、 python中的printStackTrace等价物,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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等价物所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(55)

评论列表共有 0 条评论

立即
投稿
返回
顶部