[Python-Dev] Deprecating string exceptions

Guido van Rossum guido@python.org
Sat, 06 Apr 2002 09:00:24 -0500


> I'm not sure what the base class(es) actually buys us.  We could just
> as well say by fiat that the interpreter will set the traceback
> attribute of an exception instance to the traceback.  Why do we need a
> special base class to accomplish that?  This is Python.  You don't
> need to do isinstance().  You just need to see if it has the right
> attributes.

Fair enough, though having a common base class makes it easier to
augment the functionality -- every exception class would automatically
inherit any functionality provided by the base class.

But here's the real reason (which I brought up when we had this
discussion a few weeks ago but didn't remember completely last night):
once we reach the nirvana where all exceptions derive from Exception,
we can declare that

    except:

is equivament to

    except Exception:

and then, when we also store the traceback on the exception object, we
can (eventually) get rid of sys.exc_info().

> BTW, what is the signature for Exception.__init__()?  I've written
> many exception classes, often subclasses of some other exception, but
> I've hardly ever paid attention to the superclass __init__().  It
> usually suffices to set the right attributes.

It's been a documented recommended practice to inherit from Exception
since the introduction of class exceptions.  Why are you suddenly
fighting this?

--Guido van Rossum (home page: http://www.python.org/~guido/)