python-主线程内捕获子线程异常
方法:重写Thread类,在类中添加一个flag判断子线程是否出现异常
import threading import traceback class ExcThread(threading.Thread): def __init__(self, target, args, kwargs): super(ExcThread, self).__init__() self.function = target self.args = args self.kwargs = kwargs self.exit_code = 0 #添加一个flag标记,由于判断子线程是否出错 self.exception = None self.exc_traceback = '' def run(self): try: self._run() except Exception as e: self.exit_code = 1 self.exception = e self.exc_traceback = traceback.format_exc() def _run(self): try: self.function(*self.args, **self.kwargs) except Exception as e: raise e def num(i): if i > 10: raise EOFError("abc") print(i) error_info = "" thread_fool = [] for i in range(8, 13): t = ExcThread(target=num, args=(i,), kwargs={}) thread_fool.append(t) for t in thread_fool: t.start() for t in thread_fool: t.join() if t.exit_code != 0: print(t.exc_traceback) print("MYfileERROR:",t.exception)

浙公网安备 33010602011771号