Cómo plantear la excepción en __exit__ Python

# The proper procedure is to raise the new exception inside of the __exit__ handler.
# You should not raise the exception that was passed in though; to allow for context manager chaining, in that case you should just return a falsey value from the handler. Raising your own exceptions is however perfectly fine.
# Note that it is better to use the identity test is to verify the type of the passed-in exception:

def __exit__(self, ex_type, ex_val, tb):
    if ex_type is VagueThirdPartyError:
        if ex_val.args[0] == 'foobar':
            raise SpecificException('Foobarred!')

        # Not raising a new exception, but surpressing the current one:
        if ex_val.args[0] == 'eggs-and-ham':
            # ignore this exception
            return True

        if ex_val.args[0] == 'baz':
            # re-raise this exception
            return False

    # No else required, the function exits and `None` is  returned
# You could also use issubclass(ex_type, VagueThirdPartyError) to allow for subclasses of the specific exception.
Depressed Dingo