On Mon, 14 Dec 2009 15:26:25 -0800, Carl Banks wrote: > On Dec 14, 2:48 pm, Steven D'Aprano <st...@remove-this- > cybersource.com.au> wrote: >> On Mon, 14 Dec 2009 14:31:44 +0000, exarkun wrote: >> > On 06:46 am, tjre...@udel.edu wrote: >> >>On 12/13/2009 10:29 PM, exar...@twistedmatrix.com wrote: >> >>>Doesn't matter. Sometimes it makes sense to call it directly. >> >> >>It only makes sense to call next (or .__next__) when you are prepared >> >>to explicitly catch StopIteration within a try..except construct. You >> >>did not catch it, so it stopped execution. >> >> >>Let me repeat: StopIteration is intended only for stopping iteration. >> >>Outside that use, it is a normal exception with no special meaning. >> >> > You cut out the part of my message where I wrote that one might have >> > forgotten the exception handling code that you posit is required, and >> > that the current behavior makes debugging this situation >> > unnecessarily challenging. >> >> I don't see why you think this is any more challenging to debug than >> any other equivalent bug. > > "Errors should never pass silently."
StopIteration isn't an error, it's a signal. The error is *misusing* StopIteration, and the above Zen no more applies than it would if I did x-y instead of y-x and complained that I got no traceback. Some errors are programming mistakes, and they are the deadliest error because they can and do pass silently. There's nothing you can do about that except Don't Make Mistakes. > I'm not saying it's necessarily difficult to debug--although building a > list by hand to test it is a lot more work than reading an exception > traceback Of course. Nobody said the life of a programmer was all beer and skittles :) > --but it'a stark violation of a Zen and common sense, so it is > more serious than other sorts of errors. I'm happy to accept it is a Gotcha, but a bug? I'm not convinced. -- Steven -- http://mail.python.org/mailman/listinfo/python-list