From 849d261e51e8e40d7bbee97e16df5cfdb7fe4629 Mon Sep 17 00:00:00 2001 From: Claudio-Daniel Freire Date: Tue, 17 May 2011 15:09:40 +0200 Subject: [PATCH] Preserve the traceback when relaying exceptions from within threads --- src/nepi/core/execute.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/nepi/core/execute.py b/src/nepi/core/execute.py index 40188573..f38993e2 100644 --- a/src/nepi/core/execute.py +++ b/src/nepi/core/execute.py @@ -357,10 +357,10 @@ class ExperimentController(object): def wrapped(*p, **kw): try: callable(*p, **kw) - except Exception,e: + except: import traceback traceback.print_exc(file=sys.stderr) - excs.append(e) + excs.append(sys.exc_info()) return wrapped threads = [ threading.Thread(target=wrap(callable)) for callable in callables ] for thread in threads: @@ -368,7 +368,8 @@ class ExperimentController(object): for thread in threads: thread.join() for exc in excs: - raise exc + eTyp, eVal, eLoc = exc + raise eTyp, eVal, eLoc def start(self): parser = XmlExperimentParser() -- 2.47.0