私は約Re-throwing exceptions in Pythonと書いています。これは例として非常によく似ています。
try:
self.result = self.do_something_dangerous()
except Exception, e:
import sys
self.exc_info = sys.exc_info()
をし、あなたのメインスレッド上で、あなたがこれを行う:あなたのワーカースレッドで
あなたがこれを行う(Pythonの2.xのを、Pythonの3.xバージョンについては下記を参照)
if self.exc_info:
raise self.exc_info[1], None, self.exc_info[2]
return self.result
を例外は、ワーカースレッドで発生したかのようにメインスレッドに表示されます。
のPython 3.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
メインスレッドに 'thrdobj.exc_info'をスローするのではなく、なぜあなたが転覆したときに例外タイプを削除するのですか? –
私は今、3arg raise文を読まなければなりませんでした。 「自己」についての質問はまだまだ立っています、良い答えをありがとう、私はそれを試してみます –
私は自己についてのあなたの質問は何か分かりません。このコードは、ワーカースレッド上で作業を延期するために使用されるオブジェクトから来ているため、同じオブジェクトはワーカースレッドとメインスレッドでコードを実行します。 –