为什么在捕获异常类后不能引发异常实例?奇怪的是,当我从函数中运行脚本时,我会遇到这个错误,但在pythonshell中直接运行时却没有遇到。在
In [2]: def do():
...: try:
...: raise ValueError('yofoo')
...: except TypeError, ValueError:
...: raise ValueError('yo')
...:
In [3]: do()
---------------------------------------------------------------------------
UnboundLocalError Traceback (most recent call last)
<ipython-input-3-30c46b84d9a4> in <module>()
----> 1 do()
<ipython-input-2-b62158d6343b> in do()
1 def do():
2 try:
----> 3 raise ValueError('yofoo')
4 except TypeError, ValueError:
5 raise ValueError('yo')
UnboundLocalError: local variable 'ValueError' referenced before assignment
此处预期错误:
^{pr2}$
应该是
^{pr2}$使用
except TypeError, ValueError:
时,将异常实例分配给变量名ValueError
。在对于您当前的代码,当Python解析}没有值。所以你得到
do
函数时,它注意到ValueError
是一个局部变量,因为except TypeError, ValueError:
为ValueError
赋值。但是当您在第一个try-suite
中引用它时,使用raise ValueError('yofoo')
,局部变量{UnboundLocalError
。在来自the docs:
相关问题 更多 >
编程相关推荐