Guido van Rossum wrote: > On 3/25/06, Nick Coghlan <ncoghlan at gmail.com> wrote: >> The kind of code I'm talking about would be an *existing* Python 2.4 generator >> that happens to do something like: >> >> def gen(tasks): >> """yield the results of a bunch of task functions""" >> for task in tasks: >> try: >> yield (task, task()) >> except Exception, ex: >> yield ExceptionOccurred(task, ex) > > This is purely hypothetical. It doesn't look like good style at all. > >> If you run such a generator on Python 2.5, but don't run it to completion >> before it is garbage collected, you will get an error message printed on >> stderr saying that an exception was ignored when this generator was cleaned >> up. If you use the new PEP 342 features to try to explicitly close it before >> it is garbage collected, you'll get the exception directly. > > I think this is fine. The code breaks with the new yield semantics. > But that's because the except clause was overly broad. It's easy to > rewrite it like this, which is better style anyway because the scope > of the try/except is limited. > > try: > value = (task, task()) > except Exception, ex: > value = ExceptionOccurred(task, ex) > yield value Works for me. Consider the issue dropped :) Cheers, Nick. -- Nick Coghlan | ncoghlan at gmail.com | Brisbane, Australia --------------------------------------------------------------- http://www.boredomandlaziness.org
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4