Python's "only one way to do it" philosophy isn't good?

Lenard Lindstrom len-l at telus.net
Sun Jul 1 13:27:33 EDT 2007


Douglas Alan wrote:
> Lenard Lindstrom <len-l at telus.net> writes:
> 
>> Explicitly clear the exception? With sys.exc_clear?
> 
> Yes.  Is there a problem with that?
> 

As long as nothing tries to re-raise the exception I doubt it breaks 
anything:

 >>> import sys
 >>> try:
	raise StandardError("Hello")
except StandardError:
	sys.exc_clear()
	raise


Traceback (most recent call last):
   File "<pyshell#6>", line 5, in <module>
     raise
TypeError: exceptions must be classes, instances, or strings 
(deprecated), not NoneType


But it is like calling the garbage collector. You are tuning the program 
to ensure some resource isn't exhausted. It relies on implementation 
specific behavior to be provably reliable*. If this is indeed the most 
obvious way to do things in your particular use case then Python, and 
many other languages, is missing something. If the particular problem is 
isolated, formalized, and general solution found, then a PEP can be 
submitted. If accepted, this would ensure future and cross-platform 
compatibility.


* reference counting is an integral part of the CPython C api so cannot 
be changed without breaking a lot of extension modules. It will remain 
as long as CPython is implemented in C.


---
Lenard Lindstrom
<len-l at telus.net>



More information about the Python-list mailing list