Python でキャッチされた例外の名前を取得するにはどうすればいいですか? 質問する

Python でキャッチされた例外の名前を取得するにはどうすればいいですか? 質問する

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

例外のクラス名を取得する方法はいくつかあります。

  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'

おすすめ記事