Python 3 sys.exc_info()调用不返回任何内容

时间:2019-01-15 20:01:37

标签: python python-3.x

我在python控制台中引发了一个异常:

1/0

我在设备上看到此输出:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ZeroDivisionError: division by zero

我可以通过以下方式获取异常对象:

import sys
sys.last_type, sys.last_value, sys.last_traceback

返回:

(<class 'ZeroDivisionError'>, ZeroDivisionError('division by zero',), <traceback object at 0x0000022FB03BA608>)

但是,对sys.exc_info()的调用会返回(None, None, None)

那是为什么?

我的Python版本是Python 3.6.1 (v3.6.1:69c0db5, Mar 21 2017, 18:41:36) [MSC v.1900 64 bit (AMD64)] on win32

1 个答案:

答案 0 :(得分:3)

exc_info返回 current 异常的值(请参阅文档here);到您在REPL上查看它时,该异常不再存在。

这是一个可行的示例用法:

import sys
try:
    1 / 0
except ZeroDivisionError:
    print(sys.exc_info())

要记住的重要一点是,需要从except块内调用 exc_info()