From: Claudio-Daniel Freire Date: Tue, 17 May 2011 13:09:40 +0000 (+0200) Subject: Preserve the traceback when relaying exceptions from within threads X-Git-Tag: nepi_v2~27 X-Git-Url: http://git.onelab.eu/?a=commitdiff_plain;h=849d261e51e8e40d7bbee97e16df5cfdb7fe4629;p=nepi.git Preserve the traceback when relaying exceptions from within threads --- 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()