[Python-Dev] patch: try/finally in generators

Guido van Rossum guido@python.org
Mon, 29 Jul 2002 16:09:05 -0400


> http://www.python.org/sf/584626
> 
> This patch removes the limitation of not allowing yield in the try part
> of a try/finally. The dealloc function of a generator checks if the 
> generator is still alive and resumes it one last time from the return 
> instruction at the end of the code, causing any try/finally blocks to be 
> triggered. Any exceptions raised are treated just like exceptions in a
> __del__ finalizer (printed and ignored).

Try building Python in debug mode, and then run the test suite.  I get
a fatal error in test_generators (but not when that test is run in
isolation):

Fatal Python error: ../Python/ceval.c:2256 object at 0x40b05654 has negative ref count -1

--Guido van Rossum (home page: http://www.python.org/~guido/)