Python 当我试图捕获多个异常时,如果省略括号会发生什么?
我只是试着写下:Python 当我试图捕获多个异常时,如果省略括号会发生什么?,python,exception,Python,Exception,我只是试着写下: try: # do something except ValueError, IndexError: # do something else 然后,当我的程序仍然抛出一个索引器时,我感到非常困惑,因为我认为我正在捕获它 如果它没有捕获索引器,那么这段代码到底做了什么?它似乎不是语法错误。它捕获ValueErrors,并将捕获的异常分配给名称索引器。你想要这个: except (ValueError, IndexError): 由于这个错误/问题非常常见,Py
try:
# do something
except ValueError, IndexError:
# do something else
然后,当我的程序仍然抛出一个索引器时,我感到非常困惑,因为我认为我正在捕获它
如果它没有捕获索引器
,那么这段代码到底做了什么?它似乎不是语法错误。它捕获ValueError
s,并将捕获的异常分配给名称索引器。你想要这个:
except (ValueError, 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
等一下。。它捕获一个ValueError
,将其放入一个1元组中,并为其命名为IndexError?i、 例如,要获取ValueError,我必须使用索引器[0]
?这样行吗?在作用域的持续时间内,是否将索引器从类型重新定义为异常实例,或者是什么?@标记,否-这类似于,除了as:
在本例中e
将是ValueError
或索引器
对。我把自己弄糊涂了。这对我来说已经足够清楚了:)@Ralph:Oops。抢手货这就是我的意思:)谢谢。