【问题标题】:How to get Exception Detail in Python3如何在 Python3 中获取异常详细信息
【发布时间】:2013-07-25 09:53:01
【问题描述】:

我想获取 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)

标准输出是...

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”中获得更多关于这个内置异常类的信息,

比如

  • 文件:foo.py
  • 线路:4
  • MESSAGE : 'dict' 对象没有属性 'encode'

就像这段代码的标准输出

{}.encode('utf8')

这个

Traceback (most recent call last):

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

    {}.encode('utf8')

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

【问题讨论】:

    标签: python exception python-3.x exception-handling


    【解决方案1】:

    使用traceback module 打印从当前位置或给定异常的回溯。

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

    【讨论】:

    • 正是我想要的!非常感谢!我将更多地研究traceback模块。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-31
    • 2013-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多