我刚试过写这个:
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/