Nice one. Should be a piece of cake to implement. Please talk to [EMAIL PROTECTED] about getting it checked into the PEP database.
I'm +1 on accepting this now -- anybody against? On 5/4/05, Reinhold Birkenfeld <[EMAIL PROTECTED]> wrote: > Hello, > > after proposing this here (albeit deep in the PEP 340 thread) and > getting a somewhat affirmatory response from Guido, I have written > something that could become a PEP if sufficiently hatched... > > --------------------------- > > PEP: XXX > Title: Unifying try-except and try-finally > Version: $Revision: $ > Last-Modified: $Date: $ > Author: Reinhold Birkenfeld <[EMAIL PROTECTED]> > Status: Draft > Type: Standards Track > Content-Type: text/plain > Created: 04-May-2005 > Post-History: > > Abstract > > This PEP proposes a change in the syntax and semantics of try > statements to allow combined try-except-finally blocks. This > means in short that it would be valid to write > > try: > <do something> > except Exception: > <handle the error> > finally: > <cleanup> > > Rationale/Proposal > > There are many use cases for the try-except statement and > for the try-finally statement per se; however, often one needs > to catch exceptions and execute some cleanup code afterwards. > It is slightly annoying and not very intelligible that > one has to write > > f = None > try: > try: > f = open(filename) > text = f.read() > except IOError: > print 'An error occured' > finally: > if f: > f.close() > > So it is proposed that a construction like this > > try: > <suite 1> > except Ex1: > <suite 2> > <more except: clauses> > else: > <suite 3> > finally: > <suite 4> > > be exactly the same as the legacy > > try: > try: > <suite 1> > except Ex1: > <suite 2> > <more except: clauses> > else: > <suite 3> > finally: > <suite 4> > > This is backwards compatible, and every try statement that is > legal today would continue to work. > > Changes to the grammar > > The grammar for the try statement, which is currently > > try_stmt: ('try' ':' suite (except_clause ':' suite)+ > ['else' ':' suite] | 'try' ':' suite 'finally' ':' suite) > > would have to become > > try_stmt: ('try' ':' suite (except_clause ':' suite)+ > ['else' ':' suite] ['finally' ':' suite] | > 'try' ':' suite (except_clause ':' suite)* > ['else' ':' suite] 'finally' ':' suite) > > Implementation > > As the PEP author currently does not have sufficient knowledge > of the CPython implementation, he is unfortunately not able > to deliver one. > > References > > None yet. > > Copyright > > This document has been placed in the public domain. > > ----------------------- > Reinhold > > -- > Mail address is perfectly valid! > > _______________________________________________ > Python-Dev mailing list > Python-Dev@python.org > http://mail.python.org/mailman/listinfo/python-dev > Unsubscribe: > http://mail.python.org/mailman/options/python-dev/guido%40python.org > -- --Guido van Rossum (home page: http://www.python.org/~guido/) _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com