可能重复:
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