[Python-Dev] Re: PEP-317
Steven Taschuk
staschuk@telusplanet.net
Mon, 9 Jun 2003 17:45:58 -0600
Quoth Greg Ewing:
> I'm worried about the proposed elimination of deferred instantiation
> of exceptions in Python code. The PEP asserts that this is an
> optimisation that should only be of interest in C code.
Yes -- and without argument! I quite liked writing that bit.
Btw, just to be clear: in pure Python, deferred instantiation is
already impossible; implicit instantiation is exactly equivalent
to explicit.
I admit I hadn't thought of Pyrex at all. I see that the
trade-offs are different there, and deferring instantiation might
well make lots of sense.
[...]
> It seems to me it's not necessary to eliminate implicit instantiation
> altogether, but only to remove the ambiguity between implicit and
> explicit instantiation. This could be done by mandating that
>
> raise expr
>
> *never* instantiates implicitly, whereas
>
> raise classexpr, valueexpr
>
> *always* instantiates implicitly, possibly also deferred.
In this plan, in order to raise, say, a TypeError with deferred
instantiation and no arguments, you'd have to write
raise TypeError, ()
right?
> Specification of a traceback would be done with a new keyword, e.g.
>
> raise expr [,expr] traceback tb
>
> which I think is a good idea anyway, since it makes it a lot clearer
> what the currently-somewhat-obscure third argument actually is.
I like that.
I would also like the traceback to be an attribute of the
exception object (circular references be damned!), specified by
optional keyword argument to Exception.__init__. This would
require that people writing their own exception classes be sure to
extend, not override, Exception.__init__.
--
Steven Taschuk staschuk@telusplanet.net
"[T]rue greatness is when your name is like ampere, watt, and fourier
-- when it's spelled with a lower case letter." -- R.W. Hamming