在一行中捕获多个异常(块除外)我知道我能做到:try:
# do something that may failexcept:
# do this if ANYTHING goes wrong我也可以这样做:try:
# do something that may failexcept IDontLikeYouException:
# say pleaseexcept YouAreTooShortException:
# stand on a ladder但是,如果我想在两个不同的例外中做同样的事情,我现在能想到的最好的方法就是这样做:try:
# do something that may failexcept IDontLikeYouException:
# say pleaseexcept YouAreBeingMeanException:
# say please我是否可以这样做(因为在这两个例外情况下采取的行动是say please):try:
# do something that may failexcept IDontLikeYouException, YouAreBeingMeanException:
# say please现在,这实际上是行不通的,因为它与以下语法匹配:try:
# do something that may failexcept Exception, e:
# say please因此,我捕捉这两个不同的异常的努力并没有完全实现。有办法吗?
3 回答
慕勒3428872
TA贡献1848条经验 获得超6个赞
A
try
语句可能有多个以外子句,以指定不同异常的处理程序。最多只执行一个处理程序。处理程序只处理相应TRY子句中出现的异常,而不处理相同TRY语句的其他处理程序中出现的异常。EXT子句可以将多个异常命名为括号大小的元组,例如: except (RuntimeError, TypeError, NameError): pass
注意,这个元组周围的括号是必需的,因为除了 ValueError, e:
是否用于通常编写为 except ValueError as e:
在现代Python中(如下所述)。为了向后兼容,仍然支持旧的语法。这意味着 except RuntimeError, TypeError
不等于 except (RuntimeError, TypeError):
但对 except RuntimeError as
TypeError:
这不是你想要的。
添加回答
举报
0/150
提交
取消