[Python-Dev] Style for raising exceptions (python-dev Summary for 2005年08月01日 through 2005年08月15日 [draft])

Michael Chermside mcherm at mcherm.com
Fri Aug 26 15:15:17 CEST 2005


Marc-Andre Lemburg writes:
> This is from a comment in ceval.c:
>> 	/* We support the following forms of raise:
> 	 raise <class>, <classinstance>
> 	 raise <class>, <argument tuple>
> 	 raise <class>, None
> 	 raise <class>, <argument>
> 	 raise <classinstance>, None
> 	 raise <string>, <object>
> 	 raise <string>, None
>> 	 An omitted second argument is the same as None.
>> 	 In addition, raise <tuple>, <anything> is the same as
> 	 raising the tuple's first item (and it better have one!);
> 	 this rule is applied recursively.
>> 	 Finally, an optional third argument can be supplied, which
> 	 gives the traceback to be substituted (useful when
> 	 re-raising an exception after examining it). */
>> That's quite a list of combinations that will all break
> in Python 3.0 if we only allow "raise <classinstance>".

Oh my GOD! Are you saying that in order to correctly read Python code
that a programmer must know all of THAT! I would be entirely
unsurprised to learn that NO ONE on this list... in fact, no one
in the whole world could have reproduced that specification from
memory accurately. I have never seen a more convincing argument for
why we should allow only limited forms in Python 3.0.
And next time that I find myself in need of an obfuscated python
entry, I've got a great trick up my sleeve.
-- Michael Chermside


More information about the Python-Dev mailing list

AltStyle によって変換されたページ (->オリジナル) /