此代码:
try:
raise ValueError(1,2,3)
except ValueError as (a,b,c):
print("a=%s, b=%s, c=%s" % (a,b,c))
在Python 2中打印a=1, b=2, c=3
,但在Python 3中引发SyntaxError
:
except ValueError as (a,b,c):
^
SyntaxError: invalid syntax
如何在Python 3中解构异常?
以下似乎有效(受tutorial启发):
try:
raise ValueError(1,2,3)
except ValueError as ex:
a,b,c = ex.args
print("a=%s, b=%s, c=%s" % (a,b,c))
但是很丑(并添加了额外的代码行),这是将代码库2转换为3时的PITA。