函數a()和b()會拋出異常。如何正確地省略UnboundLocalError:在拋出異常時賦值之前引用的局部變量「'?
def foo():
try:
x = a('test')
b(x, 'test2')
except Exception as ex:
raise Exception('Message error: ' + str(x) + " " + str(ex)) #here could be UnboundLocalError: Local variable 'x' referenced before assignment
我的解決辦法是: 代碼:「賦值之前引用局部變量‘X’UnboundLocalError」,而例外的是分配期間拋出這個代碼不處理
def foo():
try:
x = a('test')
try:
b(x, 'test2')
except Exception as ex:
raise Exception('Message error: ' + str(x) + " " + str(ex))
except Exception as ex:
raise Exception('Message error: ' + str(ex))
是否有可能做它更棘手,優雅?現在我不得不使用除模板外的雙重嘗試。
爲什麼你需要首先引用'x'異常消息? – roganjosh
此外,將第一個塊中的兩個函數捆綁到一個全部例外中並不是一個好主意(或者一般情況下使用一個「except」)。 'x = a('test')'失敗還是'b(x,'test2')'?目前,你解密的方式是提出另一個未被捕獲的異常。 – roganjosh