[Python-Dev] Python in Unicode context
M.-A. Lemburg
mal at egenix.com
Thu Aug 5 09:45:28 CEST 2004
Paul Prescod wrote:
> Greg Ewing wrote:
>
>> ...
>>
>>> I don't really think that "raise 42"
>>> ought to be acceptable, but I don't know how to prevent it
>>
>>
>>
>> Maybe we need to think more deeply about *why* it shouldn't be
>> acceptable. If we can figure out exactly what the criterion should be,
>> maybe we can think of a reasonable way of testing for it.
>
>
> Exceptions naturally form a hierarchy. At the same time, inheritance of
> behaviour among exceptions is seldom necessary. Therefore, exceptions
> inherit from each other in order to build a classification system, not
> to share code.
I wouldn't say that: exceptions can have error handlers, callbacks,
inherited attributes, etc. etc. and you can put these to good
use in your application.
> This is the opposite of the traditional reasons for
> classes inheriting from other classes in Python. This is why it seems
> "unpythonic" to require exceptions to be single-rooted.
I don't know what should be "unpythonic" about having a single
root for exceptions. Would someone care to explain ?
To me ...
try:
...
except Exception, errobj:
# catches all exceptions
pass
... is the most natural way of using that single root (and it already
works great today).
> But having a proper classification system is exactly what is required to
> allow robust, modular code that catches the right exceptions under the
> right circumstances and responds in the right way. So it is pythonic
> after all.
>
> In a few senses the _current model_ is unpythonic. There is no catch-all
> root so you have to use a "bare" except to catch every exception type.
> This makes it hard to introspect on the caught object. But introspection
> is the MOST IMPORTANT THING when you are catching all exceptions
> (because you should be logging the exception or something).
--
Marc-Andre Lemburg
eGenix.com
Professional Python Services directly from the Source (#1, Aug 05 2004)
>>> Python/Zope Consulting and Support ... http://www.egenix.com/
>>> mxODBC.Zope.Database.Adapter ... http://zope.egenix.com/
>>> mxODBC, mxDateTime, mxTextTools ... http://python.egenix.com/
________________________________________________________________________
::: Try mxODBC.Zope.DA for Windows,Linux,Solaris,FreeBSD for free ! ::::
More information about the Python-Dev
mailing list