4
我已经查看了有关此特定错误的其他问题,但在这些情况下,在从未定义变量的过程中存在一个路由,因此在稍后调用时会失败。然而,在我的程序中,我在try方法之前设置了变量,并在特定条件下在try方法中更改了这些变量,然后if语句稍后调用它们但失败。当Python到达if语句并尝试创建变量文本时,它宣称变量错误和error1未定义(在赋值之前引用)。UnboundLocalError:分配之前引用的局部变量'错误'
err = 0
error = 'No Error Set'
error1 = 'No Error1 Set'
try:
conn = sqlite3.connect(db_dir)
for row in conn.execute("select max(date) from eod"):
mxdate = row
if mxdate == None:
pass
else:
for row in conn.execute('select date, status from eod where date = ?',(mxdate,)):
_lst_eod = row
for row in conn.execute("select * from temp"):
_crnt_eod = row
conn.close()
except Exception as error:
error = str(error)
err = 1
logged = 0
try:
conn.close()
time = str(right_datetime())[11:19].replace(':','')
conn = sqlite3.connect(db_dir)
conn.execute("insert into error_log (date, user, auth, error, _action) values (?,?,?,?,'Failed to select from eod/temp tables.')",(int(str(_date)+time),cred[0],cred[1],error,))
conn.commit()
conn.close()
logged = 1
except Exception as error1:
error1 = str(error1)
if err == 1:
#An error occured here.
text = '##Error## An error occured while trying to end the day:\n'+error
if logged == 0:
text = text+'\n\nA row was written to the error log.'
else:
text = text+'\n\nWrite to Error Log failed due to error:\n'+error1
else:
....carry on with the rest of the program.
这似乎是问题所在。将其更改为'Exception as _error:'然后'error = str(_error)'。我想当你声明'Exception as something'时,_something_只存在于try方法中? –
是的......有一个关于我在我的答案中链接到的PEP 3110部分发生了什么的解释。 –
@I_do_python作为_something_'的异常只存在于except语句中。即当发生错误时被除外 – Shadow9043