সমস্যা হল যে thread_obj.start() অবিলম্বে ফিরে আসে। আপনি যে চাইল্ড থ্রেডটি শুরু করেছেন সেটি তার নিজস্ব প্রেক্ষাপটে, নিজস্ব স্ট্যাকের মধ্যে কার্যকর করে। সেখানে যে কোনো ব্যতিক্রম ঘটে শিশু থ্রেড প্রসঙ্গে। আপনাকে কিছু বার্তা পাঠিয়ে এই তথ্যটি অভিভাবক থ্রেডের সাথে যোগাযোগ করতে হবে।
কোডটি নিম্নরূপ পুনরায় লেখা যেতে পারে:
import sys import threading import Queue class ExcThread(threading.Thread): def __init__(self, foo): threading.Thread.__init__(self) self.foo = foo def run(self): try: raise Exception('An error occurred here.') except Exception: self.foo.put(sys.exc_info()) def main(): foo = Queue.Queue() thread_obj = ExcThread(foo) thread_obj.start() while True: try: exc = foo.get(block=False) except Queue.Empty: pass else: exc_type, exc_obj, exc_trace = exc print exc_type, exc_obj print exc_trace thread_obj.join(0.1) if thread_obj.isAlive(): continue