这样可行:
try:
raise OverflowError
except (IndexError, OverflowError):
print 'caught'
caught
但这不是:
try:
raise OverflowError
except IndexError, OverflowError:
print 'caught'
OverflowError:
第二个人做了什么?
答案 0 :(得分:0)
try
语句可能有多个except子句,以指定不同异常的处理程序。最多将执行一个处理程序。处理程序仅处理相应try子句中发生的异常,而不处理同一try语句的其他处理程序中的异常。 except子句可以将多个异常命名为带括号的元组,例如:
except (IndexError, OverflowError):
pass
请注意,此元组周围的括号是必需的,因为except ValueError, e:
是用于现代Python中通常写为except IndexError as e:
的语法。
仍支持旧语法以实现向后兼容性。这意味着except IndexError, OverflowError:
不等同于except (IndexError, OverflowError):
,而是等同于except IndexError as OverflowError:
,这不是您想要的。