嵌入在函数中的代码块:
try:
os.makedirs(os.path.dirname(log))
except OSError:
pass
错误:
UnboundLocalError: local variable 'OSError' referenced before assignment
这可能是什么症状?
答案 0 :(得分:4)
Python 2异常捕获语法中存在令人遗憾的混淆源。在函数的某个地方,您执行了以下操作:
except SomeError, OSError:
看起来它正在捕捉两种异常类型,但事实并非如此。 OSError
实际上被解释为您想要保存您正在捕捉的SomeError
个实例的变量的名称。这意味着当您尝试捕获OSError
时:
except OSError:
OSError
指的是您没有意识到自己创建的局部变量。
要捕获多个异常类型,您需要将要捕获的类型列表括起来:
except (SomeError, OSError):
答案 1 :(得分:2)
您的代码在函数中的某处分配给OSError
,这意味着编译器已将其标记为局部变量。验证该名称显示的每一位代码,以确认您没有错误地使用它。