Inline assignments

Duncan Booth duncan.booth at invalid.invalid
Thu Mar 9 10:45:13 EST 2006


 wrote:

> Coming from a background that exposed me to far too many languages, I
> find the latter two examples (i.e. use try/except) to be horrible
> solutions.  It's not a matter of light/heavy weight, it's a matter of
> using exceptions for normal loop flow control is a really bad idea.
> 1)  I think it's less clear why the loop works
> 2)  The possibility (in more complicated examples) that this could mask
> a real exception (if for example, your function

I'm waiting for the end of that sentence...

> 
> I recommend reading Effective Java (Bloch), specifically the beginning
> of the exceptions chapter, for more details why using exceptions to
> exit loops is a bad thing (and while the title is effective java, much
> of it is directly applicable to a lot of python code)

Can you paraphrase some of the arguments for those of us not fortunate 
enough to have a copy of the book? I've heard a lot of arguments against 
using exceptions, and most of those I have heard don't apply to Python.

Like it or not, Python uses exceptions for normal loop flow control. That's 
a fact of life, live with it: every normal termination of a for loop is an 
exception. Real exceptions don't get masked: for loops terminate with 
StopIteration, and they only catch StopIteration, so any other exception is 
propagated.




More information about the Python-list mailing list