我在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
答案 0 :(得分:3)
exc_info
返回 current 异常的值(请参阅文档here);到您在REPL上查看它时,该异常不再存在。
这是一个可行的示例用法:
import sys
try:
1 / 0
except ZeroDivisionError:
print(sys.exc_info())
要记住的重要一点是,需要从except块内调用 exc_info()
。