Hi all, I am trying to get the following generator to work to these goals:
1. When it recieves an exception (via a throw()) it yeilds the value of handler.remaining. Otherwise it yeilds None. 2. Send adds data to the generator. Goal 2 is working great. Goal 1 on the other hand, is not working. The result of a throw is always None. Any reasons why this does not work as I expect? If not, what is wrong? Code: def make_handler(): def handler(): eol = '\r\n' handler.remaining = 1 response = '' data = '' while not response.endswith(eol): trv = None try: ndata = (yield trv) if ndata: response += ndata trv = None except: trv = handler.remaining response = response.strip() yield response * 2 res = handler() res.next() return res x = make_handler() y = x.send('a') print 'y (should be None):',y y = x.send('b') print 'y (should be None):',y y = x.throw(Exception) print 'y (should be 1):',y y = x.send('c\r\n') print 'y (should be abcabc):',y Output: y (should be None): None y (should be None): None y (should be 1): None y (should be abcabc): abcabc Thanks, Erich -- http://mail.python.org/mailman/listinfo/python-list