引用的文档
try,
使用分配了异常后
as target,将在except子句的末尾将其清除。好像except E as N: foo被翻译成
except E as N: try: foo finally: del N这意味着必须将异常分配给其他名称,以便能够在except子句之后引用该异常。
清除异常是因为它们具有附加的回溯,它们与堆栈框架形成了一个参考循环,使该框架中的所有局部变量都保持活动状态,直到发生下一个垃圾回收为止 。
这两个PEP对此进行了介绍。
PEP 3110-Python 3000中的捕获异常
PEP 344-异常链接和嵌入式回溯



