我有一段在子进程中执行的代码,应该会引发一个异常。
当子进程返回异常时,我希望在主进程中抛出相同的异常(最好保留堆栈跟踪),但我不确定如何做到这一点。
我可以很好地捕获子进程的stderr,但我找不到如何解析它以获取异常类型。我该如何实现这一点?
我正在使用Python 2.7。
主方法
import subprocess
example=subprocess.Popen(["python","example.py"],
stdout = subprocess.PIPE,
stderr = subprocess.PIPE)
return_obj, return_error = example.communicate()
if return_error:
# replace with error from subprocess
print "Should raise ",NameError('HiThere')
raise TypeError('Wrong type')
子进程
raise NameError('HiThere')
import
代替运行另一个解释器。请注意,如果这样做,您仍然可以在单独的进程中运行example.py
中的任何函数。 - loopbackbeeif return_error: raise Exception, return_error
- Padraic Cunninghamexecfile()
在同一进程中运行example.py脚本,以便轻松地将异常作为对象获取。 - jfs