Re: Pyrex exception reraise behavior

Greg Ewing <[email protected]> Thu, 24 Jul 2008 18:54:49 +1200
Newsgroups gmane.comp.python.pyrex
Message-ID <[email protected]>
Miles wrote:

> It looks to me like Pyrex's behavior for reraising exceptions differs
> somewhat from Python's:

There are some differences, yes. Python makes the
sys.exc_info() vars dynamically scoped by saving and
restoring them in the Python stack frame every time
a call occurs.

That would be too expensive for Pyrex, so it uses
a different approach -- it stores information about
the caught exception in the C stack frame at the
point where it's caught (i.e. in the except clause).
The raise statement is required to be lexically
enclosed in the except clause so that it can access
this information.

There may be some other differences as well. What
you appear to be seeing is a leaking of the
sys.exc_info() outside the scope where it would
normally be available in Python.

Is this causing a real difficulty, or is it just
a curiosity? I'm not sure how easy it would be
to fix.

-- 
Greg