python - 如何将 traceback/sys.exc_info() 值保存在变量中?

标签 python python-2.7 exception

我想将错误名称和回溯详细信息保存到变量中。这是我的尝试。

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] 对象的用法。

最佳答案

这就是我的做法:

>>> import traceback
>>> try:
...   int('k')
... except:
...   var = traceback.format_exc()
... 
>>> print var
Traceback (most recent call last):
  File "<stdin>", line 2, in <module>
ValueError: invalid literal for int() with base 10: 'k'

不过,您应该看看 traceback documentation ,因为您可能会发现更合适的方法,具体取决于您以后要如何处理变量...

关于python - 如何将 traceback/sys.exc_info() 值保存在变量中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8238360/

相关文章:

python - nums[:] = nums[::-1] 和 nums = nums[::-1] 之间的区别

python - 从 Python 中的数据集绘图

python - 自动将音轨与配音截屏的时间对齐

python-2.7 - 将 sklearn2pmml 生成的 .pmml 导入 ScikitLearn 或 Python

python - 如何在 Python 中读取 Unicode 输入并比较 Unicode 字符串?

java - JPA 中的异常配置到底是什么?

java - 使用静态作为对象时出现空指针异常?

python - 将颜色条添加到频谱图中

python-2.7 - 是否可以在 Openerp 中显示同一对象的多个表单 View 或 TreeView ?

java - 为什么不抛出异常?