class ContextManager(object):

    def __enter__(self):
        return self

def __exit__(self, tp, v, tb):
    if tp is None:
        return
v.extra_attribute = 'foobar'
self.other_extra_attribute = 'spam-n-ham'
try:
    with ContextManager() as cm:
        raise ValueError('barfoo')
except ValueError as ex:
    print(vars(ex))
Как манипулировать исключением в __exit__ контекстного менеджера?