[Python-3000] Exceptions internals and removing sys.exc_*

Steven Bethard steven.bethard at gmail.com
Tue Jan 23 17:52:21 CET 2007


On 1/23/07, Thomas Wouters <thomas at python.org> wrote:
>
> On 1/22/07, Mark Hammond <mhammond at skippinet.com.au> wrote:
> > > Guido has mentioned [1] that since exceptions will be growing a
> > > __traceback__ attribute in Python 3, it should be possible to remove
> > > sys.exc_info().
> >
> > sys.exc_info() is also useful for returning the exception itself, not only
> > the traceback.  The traceback and logger modules both take advantage of it
> > to avoid the pain of passing exception objects around.  eg:
> >
> >   try:
> >    ...
> >   except Foo:
> >     logger.exception("something bad happened")
> >
> > is better than what may otherwise be necessary:
> >
> >   except Foo, f:
> >     logger.exception("something bad happened", exc_info=f)
> >
> > It seems a reasonable use case to have code that knows it is dealing with
> > exceptions, but not always be directly in the exception handler.
>
> I agree, and believe sys.exc_info() should just stay. There's also the case
> of try/finally and fetching any raised exception there. (In fact, doesn't
> the 'with' statement do something similar?)

Sorry, for those of us following along at home ;-) could someone
explain why we couldn't just introduce a ``sys.get_exception()`` or
something like that which would then make the exception (and therefore
the traceback) available?

STeVe
-- 
I'm not *in*-sane. Indeed, I am so far *out* of sane that you appear a
tiny blip on the distant coast of sanity.
        --- Bucky Katt, Get Fuzzy


More information about the Python-3000 mailing list