我刚试过写这个:
try:
# do something
except ValueError, IndexError:
# do something else
当我的程序仍然抛出一个IndexError
时,我感到非常困惑,因为我以为我抓住了它。
如果它没有捕获IndexError
,这段代码到底是做什么的?它似乎不是语法错误。
答案 0 :(得分:7)
因为这个错误/问题很常见,所以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
答案 1 :(得分:4)
它捕获ValueError
,并将捕获的异常分配给名称IndexError
。你想要这个:
except (ValueError, IndexError):