[Python-Dev] Deprecating string exceptions (original) (raw)

Barry A. Warsaw barry@zope.com
Sat, 6 Apr 2002 01:03:55 -0500


"JH" == Jeremy Hylton <jeremy@zope.com> writes:

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

You might be right. It certainly hasn't hindered us up 'til now.

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

When it was written in Python, I believe it was defined as

class Exception: def init(self, *args): self.args = args

and that's essentially what it is now that it's implemented in C. But many of the derived exception classes have their own funky init()s for backwards compatibility, e.g. EnvironmentError which looks at the number of arguments to decide which of the errno, strerror, and filename attributes to set.

-Barry