0dm*_*mda 5 python exception python-3.x
为什么这段代码不起作用?
def test():
e = None
try:
raise Exception
except Exception as e:
pass
return e
test()
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
UnboundLocalError:赋值前引用了局部变量“e”
che*_*ner 10
当异常被捕获并绑定到一个名称时,该名称会在try语句之后被清除。从声明的文档中try:
except E as N:
foo
Run Code Online (Sandbox Code Playgroud)
行为与
except E as N:
try:
foo
finally:
del N
Run Code Online (Sandbox Code Playgroud)
因此,如果捕获到异常,则e一旦return e到达就不再存在。这被描述为是为了打破堆栈帧(包含对 的引用e)和被引用的回溯(包含对堆栈帧的引用)之间的引用循环e。
| 归档时间: |
|
| 查看次数: |
843 次 |
| 最近记录: |