otiai10
otiai10

Reputation: 4879

How to get Exception Detail in Python3

I want to get details of Exception in Python3

for example... in 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)

and stdout is...

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>

I want more information of this built in Exception class from instance "err",

such as

just like stdout of this code

{}.encode('utf8')

this

Traceback (most recent call last):

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

    {}.encode('utf8')

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

Upvotes: 2

Views: 5103

Answers (1)

Martijn Pieters
Martijn Pieters

Reputation: 1121266

Use the traceback module to print tracebacks from your current position or for a given exception.

You don't state what output you are expecting, but the traceback module most likely will be able to produce output best suited for your needs, whatever they may be.

Upvotes: 3

Related Questions