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

发布于 2021-01-29 18:32:20

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

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

PS:我知道可以使用追溯模块轻松完成此操作,但是我想在此了解sys.exc_info()[2]对象的用法。

关注者
0
被浏览
45
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    这是我的方法:

    >>> 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文档,因为您可能会发现更合适的方法,这取决于您以后要如何处理变量…



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看