[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