[Python-ideas] Retrying EAFP without DRY

Bruce Leban bruce at leapyear.org
Sat Jan 21 02:40:15 CET 2012


On Fri, Jan 20, 2012 at 4:36 PM, Mike Meyer <mwm at mired.org> wrote:

> A single new keyword/clause, "retry". It has the same syntax as an
> "except" clause, can be used anywhere "except" can be used, and can be
> intermingled with them in the same try statement. There's probably a
> better syntax, but this is easy to describe.
>
> The behavior change from except is that instead of exiting the "try"
> statement when the "retry" clause ends, it restarts the try
> clause. In python, this code:
>
>    try:
>        # try block
>    except:
>        # except block
>    retry:
>        # retry block
>    else:
>        # else block
>    finally:
>        # finally block
>

Can you write this in terms of current Python code? I don't understand
exactly when a retry block would be executed. In Eiffel, retry is a
statement, not a clause. Analogous to that would be:

try:
    # block
except:
    # block
    if condition: retry

The equivalent of this in current Python is

while True:
    try:
        # block
    except:
        # block
        if condition: continue # retry
    break

FWIW, if this turns out to be a good idea, an alternate spelling that would
not require a new keyword is 'try again'.

--- Bruce
Follow me: http://www.twitter.com/Vroo http://www.vroospeak.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20120120/e067c101/attachment.html>


More information about the Python-ideas mailing list