例として、これに非常によく似たものを含め、 Python で例外を再スローする について書きました。
ワーカー スレッドでこれを行います (Python 3.x、Python 2.x バージョンについては以下を参照)。
try:
self.result = self.do_something_dangerous()
except Exception as e:
import sys
self.exc_info = sys.exc_info()
そしてあなたのメインスレッドで:
if self.exc_info:
raise self.exc_info[1].with_traceback(self.exc_info[2])
return self.result
Python 2.x:
try:
self.result = self.do_something_dangerous()
except Exception, e:
import sys
self.exc_info = sys.exc_info()
メインスレッドでこれを行います:
if self.exc_info:
raise self.exc_info[1], None, self.exc_info[2]
return self.result
ワーカー スレッドで例外が発生したかのように、例外がメイン スレッドに表示されます。