无法解决Python中的UnboundLocalError
这个代码块是在一个函数里面的:
try:
os.makedirs(os.path.dirname(log))
except OSError:
pass
出现的错误:
UnboundLocalError: local variable 'OSError' referenced before assignment
这可能是什么问题的表现呢?
2 个回答
2
你的代码在某个地方把 OSError
这个名字赋值了,这就意味着编译器把它当作一个局部变量了。你需要检查一下所有出现这个名字的地方,确保你没有用错它。
4
在Python 2中,处理异常的写法有点让人困惑。在某个函数里,你可能写了类似下面的代码:
except SomeError, OSError:
看起来好像是要捕捉两种异常类型,但其实不是。OSError
实际上被解释成了一个变量名,用来存放你捕捉到的SomeError
实例。这意味着当你尝试捕捉OSError
时:
except OSError:
OSError
指的是你不知道自己创建的一个局部变量。
如果你想捕捉多种异常类型,你需要把这些类型用括号括起来:
except (SomeError, OSError):