'Handles an error
If the flag is in _ignored_flags, returns the default response.
Otherwise, it sets the flag, then, if the corresponding
trap_enabler is set, it reraises the exception.  Otherwise, it returns
the default value after setting the flag.'

def _raise_error(self, condition, explanation=None, *args):

    error = _condition_map.get(condition, condition)
    if (error in self._ignored_flags):
        return error().handle(self, *args)
    self.flags[error] = 1
    if (not self.traps[error]):
        return condition().handle(self, *args)
    raise error(explanation)
