【发布时间】:2015-06-16 00:27:14
【问题描述】:
try:
...
except (SomeError) as err:
...
else:
...
finally:
if err:
...
这给出了一个错误:'err not defined'。因为就 finally 块而言,异常参数 - err - 没有定义。那么似乎异常参数是异常块的本地参数。
您可以通过将 err 复制到块外定义的另一个变量来绕过它:
teleport = ""
try:
...
except (SomeError) as err:
teleport = err
else:
...
finally:
if teleport:
...
但是为什么不能简单地引用 finally 块中的异常参数呢? (假设我没有忽略其他东西。)
【问题讨论】:
-
并且引发了异常,对吧?
-
分配
teleport = ""的意义何在?字符串是不可变的 -
@Pynchia 可能会阻止
NameError被提出。 -
哦,是的。抱歉,被倒置检查卡住了
-
@Pynchia 这一切都很好。 :D
标签: python exception scope finally try-except