python – 在一行中捕获多个异常(块除外)

我知道我可以做:

try:
    # do something that may fail
except:
    # do this if ANYTHING goes wrong

我也可以这样做:

try:
    # do something that may fail
except IDontLikeYourFaceException:
    # put on makeup or smile
except YouAreTooShortException:
    # stand on a ladder

但是如果我想在两个不同的例外中做同样的事情,我现在最好的想法是这样做:

try:
    # do something that may fail
except IDontLikeYouException:
    # say please
except YouAreBeingMeanException:
    # say please

有什么办法,我可以做这样的事情(因为采取行动,在两个例外是说,请):

try:
    # do something that may fail
except IDontLikeYouException, YouAreBeingMeanException:
    # say please

现在这真的不会工作,因为它匹配的语法:

try:
    # do something that may fail
except Exception, e:
    # say please

所以,我努力抓住两个不同的例外并不完全通过。

有没有办法做到这一点?

最佳答案
From https://docs.python.org/2/tutorial/errors.html#handling-exceptions:“一个except子句可以将多个异常命名为一个括号元组,例如:”:

except (IDontLikeYouException, YouAreBeingMeanException) as e:
    pass

使用逗号分隔异常和变量仍然可以在Python 2.6和2.7中工作,但现在已经过时了,在Python 3中不起作用;现在你应该使用as。

转载注明原文:python – 在一行中捕获多个异常(块除外) - 代码日志