これは、黙認の奇跡の後、インタープリターが次のスニペットを許可したときに、複数の例外をキャッチすることで見つけることができる最も近い答えです (正しい方法):
try:
x = "5" + 3
except NameError and TypeError as e:
print e
ドキュメントはこのスニペットも提供しますが、前者のようなものはありません:
... except (RuntimeError, TypeError, NameError):
... pass
ですから、セカンドオピニオンがあればいいのですが、私の質問は次のようになります。
- メッセージを印刷するだけでなく、印刷ステートメントの先頭に発生したエラーの正確なタイプを挿入するにはどうすればよいですか。たとえば、最初のスニペットが代わりにこれを出力して応答することをお勧めします。
TypeError: cannot concatenate 'str' and 'int' objects
args
インタープリターがリストのみをmessage
メンバーとしてリストすることを考えると、おそらく不可能または簡単ではないように感じますNameError
が、おそらくそれは単に不完全です.
私はこれを自分で試しましたが、エラーを除外しなくなりました (isinstance を誤解している可能性があります):
try:
x = "5" + 3
except (NameError, TypeError) as e:
if isinstance(e, NameError):
print "NameError: " + e
elif isinstance(e, TypeError):
print "TypeError: " + e
else:
print e