这是我在捕获多个异常(正确方法)时能找到的最接近的答案,在默许奇迹之后,解释器允许以下片段:
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