Understanding the Python with statement and context managers

contextmanager, python, with-statement

Solution

`with` doesn't really replace `try`/`except`, but, rather, `try`/`finally`. Still, you can make a context manager do something different in exception cases from non-exception ones:

class Mgr(object):
    def __enter__(self): pass
    def __exit__(self, ext, exv, trb):
        if ext is not None: print "no not possible"
        print "OK I caught you"
        return True

with Mgr():
    name='rubicon'/2 #to raise an exception

The `return True` part is where the context manager decides to suppress the exception (as you do by not re-raising it in your `except` clause).

Problem

I am trying to understand the `with` statement. I understand that it is supposed to replace the `try`/`except` block. Now suppose I do something like this: ``` try: name = "rubicon" / 2 # to raise an exception except Exception as e: print("No, not possible.") finally: print("OK, I caught you.") ``` How do I replace this with a context manager?

Original source

Related problems