[Python-ideas] One-line "try with" statement

Oscar Benjamin oscar.j.benjamin at gmail.com
Tue Mar 5 16:56:13 CET 2013


On 3 March 2013 21:36, Greg Ewing <greg.ewing at canterbury.ac.nz> wrote:
> Stefan Behnel wrote:
>>
>> The above example therefore strikes me as
>> useless. If you need a try-except around a with block, then your context
>> manager is doing something wrong.
>
> A with statement is equivalent to try-finally, not try-except,
> so if you want to catch the exception you still need to put
> a try-except somewhere.

With statements can be used for any kind of exception handling you
like, not just try/finally. For example:

import contextlib

@contextlib.contextmanager
def ignore(errorcls):
    try:
        yield
    except errorcls:
        pass

with ignore(ValueError):
    a = int('a')


Oscar



More information about the Python-ideas mailing list