J'essaie d'attraper une exception dans un thread et de la relancer dans le thread principal:
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]
Cela fonctionne fondamentalement et donne la sortie suivante:
(<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]
Toutefois, la source de l'exception pointe vers la ligne 16, où la nouvelle augmentation a eu lieu. L'exception originale provient de la ligne 7. Comment dois-je modifier le thread principal pour que la sortie se présente comme suit:
Traceback (most recent call last):
File "test.py", line 7, in <module>