2013-07-25 154 views
2

我想要得到异常的细节Python3如何获得异常详细信息在Python3

例如...在foo.py

import sys 

try: 
    {}.encode('utf8') 
except: 
    err = sys.exc_info()[0] 

    print("itself\t", err) 
    print(".args\t", err.args) 

    print("dir\t", dir(err.args)) 
    print("type\t", type(err.args)) 

    print("vars\t", vars(err)) 

    print("--------k,v in vars---------") 
    for k,v in vars(err).items(): 
    print(k) 
    print(v) 

和stdout是...

itself <class 'AttributeError'> 
.args <attribute 'args' of 'BaseException' objects> 
dir  ['__class__', '__delattr__', '__delete__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__get__', '__getattribute__', '__gt__', '__hash__', '__init__', '__le__', '__lt__', '__name__', '__ne__', '__new__', '__objclass__', '__qualname__', '__reduce__', '__reduce_ex__', '__repr__', '__set__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__'] 
type  <class 'getset_descriptor'> 
vars  {'__init__': <slot wrapper '__init__' of 'AttributeError' objects>, '__doc__': 'Attribute not found.', '__new__': <built-in method __new__ of type object at 0x821c3a0>} 
--------k,v in vars--------- 
__init__ 
<slot wrapper '__init__' of 'AttributeError' objects> 
__doc__ 
Attribute not found. 
__new__ 
<built-in method __new__ of type object at 0x821c3a0> 

我想要从实例“err”中内置的Exception类的更多信息,

例如

  • FILE:foo.py
  • LINE:4
  • MESSAGE: '字典' 对象没有属性 '编码'

只是这样的代码

{}.encode('utf8') 

的stdout中这

Traceback (most recent call last): 

    File "foo.py", line 2, in <module> 

    {}.encode('utf8') 

AttributeError: 'dict' object has no attribute 'encode' 

回答

3

使用traceback module可打印当前位置或给定例外的追溯。

您没有说明您期望的输出,但traceback模块很可能会生成最适合您需求的输出,无论它们是什么。

+0

正是这就是我想要的!非常感谢你!我会更多地研究追溯模块。 – otiai10