1. ホーム
  2. python

[解決済み] Pythonでキャッチした例外の名前を取得する方法は?

2022-04-20 01:35:22

質問

Pythonで発生した例外の名前を取得するにはどうすればよいですか?

などです。

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

例えば、複数の(あるいは全ての)例外をキャッチしており、エラーメッセージに例外の名前を表示したい。

どのように解決するのですか?

ここでは、例外のクラス名を取得するためのいくつかの異なる方法を紹介します。

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

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