wie der Titel es schon andeutet, würde mich interessieren, wie man am Besten eine Exception eines Child Thread im Main Thread abfangen kann. Ich habe mal versucht ein wirkliches Minimalbeispiel zu kredenzen, um es zu veranschaulichen.
Wie ihr unten seht, würde ich gerne irgendwie in 'main()' die Exception registrieren lassen. Aktuell bringt der try/except Block gar nichts und es wird eine Exception geworfen (Traceback siehe unten). Gibt es eine allgemein anerkannte Lösung für so ein Problem?
Danke schonmal für eure Hilfe und Anregungen.
Code: Alles auswählen
import time
from threading import Thread
def faulty_worker():
time.sleep(1)
raise Exception
def main():
try:
t = Thread(target=faulty_worker).start()
except:
print "Huzzah!"
if __name__ == '__main__':
main()
Code: Alles auswählen
Exception in thread Thread-2:
Traceback (most recent call last):
File "/usr/lib/python2.7/threading.py", line 551, in __bootstrap_inner
self.run()
File "/usr/lib/python2.7/threading.py", line 504, in run
self.__target(*self.__args, **self.__kwargs)
File "/home/nebelhom/SpyderWorkspace/pydf-chain/sandbox.py", line 50, in faulty_worker
raise Exception
Exception