On 1/24/2012 7:52 PM, Mike Meyer wrote:
For instance, I would write your example like so:
try: walk_iter = os.walk(topdir) dirpath, files, subdirs = next(wi) # Special case the top level directory except StopIteration: raise RuntimeError("No dir entry for {!r}".format(topdir)) # other exception handling here, as appropriate.
for dirpath, files, subdirs in walk_iter: # Process the subdirectories
I would too, but ...
Likewise, the try statement is very powerful. That break/continue may or may not be evil is immaterial. The point is to make the try statement more powerful.
I disagree with turning 'try' into a specialized loop construct by adding a version of continue, which is a version of goto. We currently have a general overt loop (while), the covert equivalent (tail recursion), and a 'specialized' loop (for) that covers the majority of loop needs, leaving the generalized loop (while) to cover everything else. A 'try' statement in itself it a glorified label statement that also sets up the context for exception statements. Exception statement are conditional statements where the condition is an exception state. A marked program position plus a conditional jump is what makes a loop. -- Terry Jan Reedy