python - 当我试图捕获多个异常时省略括号会发生什么?

标签 python exception

我刚试过写这个:

try:
    # do something
except ValueError, IndexError:
    # do something else

当我的程序仍然抛出 IndexError 时,我感到非常困惑,因为我以为我正在捕捉它。

如果它没有捕捉到 IndexError,那么这段代码究竟做了什么?这似乎不是语法错误。

最佳答案

因为这个错误/问题很常见,Python3 的语法发生了变化。你的代码相当于

try:
    # do something
except (ValueError, ) as IndexError:
    # do something else

你会发现这显然是错误的。

新语法可以追溯到 Python2.6

这工作正常

try:
    # do something
except (ValueError, IndexError):
    # do something else

但通常你想做一些有异常的事情,所以你可以这样写

try:
    # do something
except (ValueError, IndexError) as e:
    # do something with e

关于python - 当我试图捕获多个异常时省略括号会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6407079/

相关文章:

python - 确定 GPS 坐标是否落在道路上

java - Java中如何忽略指定的关键字

swift - 错误 : EXC_BAD_ACCESS (code=1, 地址 = 0x6f697483)。进程已经返回到表达式求值前的状态

c# - 是否可以处理 LINQ 查询中的异常?

c++ - 异常处理 C++ 错误

python - 使用keras进行人脸识别

python - 如何在 Python 中访问当前正在执行的模块或类名?

python - 从 HTML 数组中提取 4 个字符,Python

python - Rpy2:如何将字典列表转换为 R 数据框

python - "raise"的范围在 Python 2 和 3 的嵌套异常处理程序中没有参数