The first concern that comes to my mind is... When I see: with: ... except: ...
Is that a shorthand for try: with: ... except: ... or for with: try: ... except: ... ? Both are plausible, and it makes a big difference, because 'with' already has an implicit 'except' block built in. -n On Tue, Jan 22, 2019, 12:12 Paul Ferrell <pfl...@gmail.com wrote: > I've found that almost any time I'm writing a 'with' block, it's doing > something that could throw an exception. As a result, each of those > 'with' blocks needs to be nested within a 'try' block. Due to the > nature of 'with', it is rarely (if ever) the case that the try block > contains anything other than the with block itself. > > As a result, I would like to propose that the syntax for 'with' blocks > be changed such that they can be accompanied by 'except', 'finally', > and/or 'else' blocks as per a standard 'try' block. These would handle > exceptions that occur in the 'with' block, including the execution of > the applicable __enter__ and __exit__ methods. > > Example: > > try: > with open(path) as myfile: > ... # Do stuff with file > except (OSError, IOError) as err: > logger.error("Failed to read/open file {}: {}".format(path, err) > > The above would turn into simply: > > with open(path) as myfile: > ... # Do stuff with file > except (OSError, IOError) as err: > logger.error(...) > > > I think this is rather straightforward in meaning and easy to read, > and simplifies some unnecessary nesting. I see this as the natural > evolution of what 'with' > is all about - replacing necessary try-finally blocks with something > more elegant. We just didn't include the 'except' portion. > > I'm a bit hesitant to put this out there. I'm not worried about it > getting shot down - that's kind of the point here. I'm just pretty > strongly against to unnecessary syntactical additions to the language. > This though, I think I can except. It introduces no new concepts and > requires no special knowledge to use. There's no question about what > is going on when you read it. > > -- > Paul Ferrell > pfl...@gmail.com > _______________________________________________ > Python-ideas mailing list > Python-ideas@python.org > https://mail.python.org/mailman/listinfo/python-ideas > Code of Conduct: http://python.org/psf/codeofconduct/ >
_______________________________________________ Python-ideas mailing list Python-ideas@python.org https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/