How to get your hands on exception object caught by default ipython exception handler?

Suppose I'm running some code interactively in IPython and it produces an uncaught exception, like:

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

This exception is now intercepted by the default IPython exception handler and produces an error message. Is it possible somehow to extract the exception object that was caught by IPython?

I want to have the same effect as in:

# Typing this into IPython prompt:
try:
    os.waitpid(1, os.WNOHANG)
except Exception, exc:
    pass
# (now I can interact with "exc" variable)

but I want it without this try/except boilerplate.

Answers


I think sys.last_value should do the trick:

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',)

If you want even more fun with such things, checkout the traceback module, but that probably won't be of much use within ipython.


Need Your Help

What is the ideal length of an URL slug

web-applications url-rewriting seo

To make pretty URL's from article titles I am using a simple function. However lately I an concerned about the ideal length of these "slugs". It is said that too many dashes are bad.

View JSON file in Browser

javascript json internet-explorer firefox google-chrome

It is not a programming question, but need your views in few words.