[Python-ideas] Potential PEP: with/except
Barry Scott
barry at barrys-emacs.org
Tue Jan 22 15:47:45 EST 2019
> On 22 Jan 2019, at 20:11, Paul Ferrell <pflarr at 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(...)
>
Or this that shows the except/finally will be present?
try 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
> pflarr at gmail.com
> _______________________________________________
> Python-ideas mailing list
> Python-ideas at python.org
> https://mail.python.org/mailman/listinfo/python-ideas
> Code of Conduct: http://python.org/psf/codeofconduct/
>
More information about the Python-ideas
mailing list