我在解決這種情況的最佳方式方面遇到了一些麻煩(主要是由於我認爲缺乏經驗)。 我已經在一個從Main調用的類中編寫了幾個定義來執行某些任務。假設Main可以被任何人用於多種目的,所以殺死類定義中的代碼是不可取的。這些定義的一個基本規則是,如果def1成功完成任務,則可以調用def2。但是,如果def1失敗,則不能調用def2,因爲它也會失敗。如何處理從主內部生成的異常
例如半僞代碼中,並且無例外: -
# Test.py
if __name__ == '__main__'
# variables imported from a file
var1 = a
var2 = b
class.def1(var1, var1)
class.def2(var_from_def1)
最初我剛進行,不同的是一個DEF1 sys.exit():,但如前所述,造成整個節目是不可取的,這將是優選的,讓拋出異常並讓Main控制是否調用def2。
從我對異常的理解(儘管它是有限的),這不會工作,因爲異常操作需要在它被提出之前已經被定義。除非它可以在Main中定義,但我寧願Main有一個選項來做到這一點。
首選的解決方案是讓Main輸入變量,將它們傳遞給def1,如果def1失敗,並且Main沒有設置爲捕獲異常,則以下對def2的調用將被幹淨地停止(不殺死進程或顯示失敗),不知道該怎麼做,或者如果Main捕獲異常,它可以停止調用def2,加載另一組變量並再次嘗試def1。
下面是代碼的概念視圖,可以幫助瞭解我來自哪裏。
# Test.py
if __name__ == '__main__'
# variables imported from file
var1 = a
var2 = b
while new variables to pull from file:
try:
class.def1(var1, var1)
except:
print 'def1 exception thrown'
else:
class.def2(var_from _def1)
# class.py
class class(object):
def def1(self, var1, var2):
try:
do something potentially flawed
except:
# this is where I get stuck, not sure how or if I can pass an exception back to the main to decide what to do
sys.stdout.write('didn't work')
return something
對不起,它看起來凌亂,它的解決辦法我有,這可能不應該混在一起的一些想法的組合。
任何建議將是偉大的。我已閱讀了一些關於例外的書籍和論壇,但無法掌握如何最好地解決這種情況。
謝謝。
對不起布萊恩,我把我的問題搞得一團糟,實際上應該是在一個類中有2個定義,而不是2個子類。我編輯了我的帖子來糾正這個問題。再次抱歉混淆。 – user788462