2010-02-24 34 views
0

在我的應用程序中,我有一個循環,每次都會創建一個執行某些操作的類的實例。在這個類中,我有一個信號定時器,它在被調用時應該優雅地退出循環中的當前轉向並允許下一個操作繼續而不會中斷。Python中的級別返回/退出

在它的當前狀態下,它引發了一個應該被try-except-block捕獲的異常。然而,我有一個「loadFinished」信號(我不知道這個id是什麼)在拋出異常之後調用,並導致我無法捕捉的函數定義的運行時異常。

有沒有辦法做一個類級別的返回,就像一個會做什麼來結束一個函數,如果有什麼錯誤?或者,也許某種僅適用於類的sys.exit()?

我希望我自己清楚。 :) 感謝您的幫助。

+0

您是否使用多個線程? –

+0

不,只有一個...... – Christoffer

+0

我認爲你需要發佈代碼才能理解,但是如果你在討論Posix/unix信號,那麼你不能拋出異常,只是設置一個標誌,寫入管道。 –

回答

1

克里斯托弗,

也許使用TimerEvent類更適合你。你可以檢查你循環內要設置的事件的再退出當前迭代:

if my_event.isSet(): 
    continue 

我認爲你正在試圖做的是不是一個真正的好設計。我沒有辦法將異常「拋出」到不同的功能中。我通過信號假設你是指異步函數調用。這當然也可以設置上述事件。

1

如果您正在討論signal module中的信號,那麼處理程序不會以標準方式調用。

你不能拋出一個異常,並期望它出現在你的普通代碼中。事實上,你應該儘量在你的處理程序中儘可能少地做 - 設置一個全局標誌,或者在管道上發送消息。