Python で例外で投げられたクラスの名前を取得2023年02月07日 12時26分53秒

C++ の try/catch では、互換性のある例外を捕捉する事は出来るが、元々投げられたクラスを見付けられない。catch した型として処理しなければいけないのだ。

Python はスクリプト言語なので、例外を Exception として捕捉しても元々のクラスを見付けることが出来る。

% cat exception.py
for e in [RuntimeError, TypeError, NameError]:
    try:
        raise e
    except Exception as ex:
        print(ex.__class__.__name__)
これで、各々の投げられた型を見付けることが出来る。
% python3.8 exception.py
RuntimeError
TypeError
NameError