python - 在一行中捕获多个异常( block 除外)

我知道我能做到:

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

我也可以这样做:

try:
    # do something that may fail
except IDontLikeYouException:
    # say please
except YouAreTooShortException:
    # stand on a ladder

但是如果我想在两个不同的异常中做同样的事情,我现在能想到的最好的就是这样做:

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

有什么方法可以让我做这样的事情(因为在这两种异常(exception)情况下采取的行动都是say please):

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

现在这真的行不通了,因为它符合以下语法:

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

所以,我没有完全成功地捕获这两个不同的异常。

有没有办法做到这一点?

最佳答案

来自 Python Documentation :

An except clause may name multiple exceptions as a parenthesized tuple, for example

except (IDontLikeYouException, YouAreBeingMeanException) as e:
    pass

或者,仅适用于 Python 2:

except (IDontLikeYouException, YouAreBeingMeanException), e:
    pass

在 Python 2.6 和 2.7 中用逗号将异常与变量分开仍然可以使用,但现在已弃用并且在 Python 3 中不起作用;现在你应该使用 as

https://stackoverflow.com/questions/6470428/

相关文章:

python - **(双星/星号)和*(星号/星号)对参数有什么作用?

python - 使用 __init__() 方法理解 Python super()

python - 如何克隆列表以使其在分配后不会意外更改?

python - 如何向字典添加新键?

python - "Least Astonishment"和可变默认参数

python - 如何通过引用传递变量?

python - 如何将字符串解析为 float 或整数?

python - 如何将文件逐行读入列表?

android - 有没有办法在 Android 上运行 Python?

python - 如何在 Python 中连接两个列表?