可能重複:
Catch a thread’s exception in the caller thread in Pythonthread.start_new_thread:轉讓例外主線程
我有一個給定的代碼,有一個
thread.start_new_thread()
正如我剛纔在python doc中讀取:「當函數以未處理的異常終止時,會打印一個堆棧跟蹤,然後是thre廣告退出(但其他線程繼續運行)。「 但是,當(新)函數終止異常時,我也想終止主線程 - 所以異常應該傳遞給主線程。我怎樣才能做到這一點?
編輯: 這裏是我的代碼部分:
def CaptureRegionAsync(region=SCREEN, name="Region", asyncDelay=None, subDir="de"):
if asyncDelay is None:
CaptureRegion(region, name, subDir)
else:
thread.start_new_thread(_CaptureRegionAsync, (region, name, asyncDelay, subDir))
def _CaptureRegionAsync(region, name, asyncDelay, subDir):
time.sleep(max(0, asyncDelay))
CaptureRegion(region, name, subDir)
def CaptureRegion(region=SCREEN, name="Region", subDir="de"):
...
if found:
return
else:
raise Exception(u"[warn] Screenshot has changed: %s" % filename)
CaptureRegionAsync(myregion,"name",2)
對我來說似乎是另一個問題,而不是重複。如果「給定代碼」是指「不能修改的第三方代碼」,則問題完全不同。 – Ellioh
對不起,「一個給定的代碼」意味着我沒有寫它,所以我不是很熟悉它 - 但我可以修改它。 – Munchkin
那麼我的第一個答案是不是你的問題,和猴子修補線程是一個壞主意。 :-) – Ellioh