Home » Python » How to get name of exception that was caught in Python?

How to get name of exception that was caught in Python?

Posted by: admin November 30, 2017 Leave a comment

Questions:

How can I get the name of an exception that was raised in Python?

e.g.,

try:
    foo = bar
except Exception as exception:
    name_of_exception = ???
    assert name_of_exception == 'NameError'
    print "Failed with exception [%s]" % name_of_exception

For example, I am catching multiple (or all) exceptions, and want to print the name of the exception in an error message.

Answers:

Here are two different ways to get the name of the exception:

  1. type(exception).__name__
  2. exception.__class__.__name__

e.g.,

try:
    foo = bar
except Exception as exception:
    assert type(exception).__name__ == 'NameError'
    assert exception.__class__.__name__ == 'NameError'

Questions:
Answers:

This works, but it seems like there must be an easier, more direct way?

try:
    foo = bar
except Exception as exception:
    assert repr(exception) == '''NameError("name 'bar' is not defined",)'''
    name = repr(exception).split('(')[0]
    assert name == 'NameError'