[Python-Dev] Deprecating string exceptions
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