abb*_*bot 11 python exception-handling ipython
假设我在IPython中以交互方式运行一些代码,它会产生一个未捕获的异常,例如:
In [2]: os.waitpid(1, os.WNOHANG)
---------------------------------------------------------------------------
OSError Traceback (most recent call last)
<ipython-input-2-bacc7636b058> in <module>()
----> 1 os.waitpid(1, os.WNOHANG)
OSError: [Errno 10] No child processes
Run Code Online (Sandbox Code Playgroud)
此异常现在由默认的IPython异常处理程序拦截并生成错误消息.有可能以某种方式提取IPython捕获的异常对象吗?
我希望产生与以下相同的效果:
# Typing this into IPython prompt:
try:
os.waitpid(1, os.WNOHANG)
except Exception, exc:
pass
# (now I can interact with "exc" variable)
Run Code Online (Sandbox Code Playgroud)
但我想要它没有这个try/except
样板.
Wil*_*ill 25
我认为sys.last_value
应该这样做:
In [8]: 1/0
---------------------------------------------------------------------------
ZeroDivisionError Traceback (most recent call last)
/home/ubuntu/<ipython console> in <module>()
ZeroDivisionError: integer division or modulo by zero
In [11]: sys.last_value
Out[11]: ZeroDivisionError('integer division or modulo by zero',)
Run Code Online (Sandbox Code Playgroud)
如果你想要更多有趣的事情,请检查回溯模块,但这可能在ipython中没有多大用处.