【发布时间】:2012-01-04 12:27:24
【问题描述】:
我想将错误名称和回溯详细信息保存到变量中。这是我的尝试。
import sys
try:
try:
print x
except Exception, ex:
raise NameError
except Exception, er:
print "0", sys.exc_info()[0]
print "1", sys.exc_info()[1]
print "2", sys.exc_info()[2]
输出:
0 <type 'exceptions.NameError'>
1
2 <traceback object at 0xbd5fc8>
所需的输出:
0 NameError
1
2 Traceback (most recent call last):
File "exception.py", line 6, in <module>
raise NameError
附:我知道这可以使用 traceback 模块轻松完成,但我想在这里了解 sys.exc_info()[2] 对象的用法。
【问题讨论】:
-
您是否尝试打印 sys.exc_info()[x].__str__()?
-
您可能误解了程序中发生的事情:您所说的“sys.exc_info()[2] 对象”是回溯对象的一个实例(=您正在使用回溯模块已经)。现在,您可以在不使用 traceback 模块中的帮助函数的情况下操作该对象,但这并不会改变您仍在使用它的事实。 :)
-
所以@mac 请帮助我使用或不使用辅助函数访问此对象的值。
-
@dragosrsupercool - 正如我在下面的回答中提到的,您应该查看traceback documentation。我提供了一个如何以文本方式检索数据的示例,但是对象的其他方法允许您提取异常名称、代码行等……正确的方法实际上取决于您要如何操作之后的价值......
-
我的answer 到另一个问题可能有助于说明细节 - 带有链接!对于固定字符串,标准库回溯模块似乎没问题。如果您想获取详细信息,请阅读源 (
<python install path>/Lib/traceback.py) 了解更多信息。
标签: python python-2.7 exception