Повторно вызвать исключение Python и сохранить трассировку стека

Я пытаюсь перехватить исключение в потоке и повторно вызвать его в основном потоке:

import threading
import sys

class FailingThread(threading.Thread):
    def run(self):
        try:
            raise ValueError('x')
        except ValueError:
            self.exc_info = sys.exc_info()

failingThread = FailingThread()
failingThread.start()
failingThread.join()

print failingThread.exc_info
raise failingThread.exc_info[1]

Это в основном работает и дает следующий результат:

(<type 'exceptions.ValueError'>, ValueError('x',), <traceback object at 0x1004cc320>)
Traceback (most recent call last):
  File "test.py", line 16, in <module>
    raise failingThread.exc_info[1]

Однако источник исключения указывает на строку 16, где произошло повторное повышение. Исходное исключение происходит из строки 7. Как мне изменить основной поток так, чтобы вывод был следующим:

Traceback (most recent call last):
  File "test.py", line 7, in <module>
52
задан roskakori 6 January 2012 в 04:34
поделиться