All pastes #792565 Raw Edit

Unnamed

public text v1 · immutable
·published 2007-11-21 15:03 UTC
rendered paste body
import sys
def exception_wrapper(functor, exc_list=NotSet, return_on_error=None):
    def wrapper(*rest, **kw_args):
        try:
            return functor(*rest, **kw_args)
        except exc_list:
            etype, evalue, etrace = sys.exc_info()
            print "WARNING: Intercepted exception %s: %s" % (etype, evalue)
            return return_on_error
    # end wrapper

    return wrapper
# end exception_wrapper


class A(object):

    def foo(self, n):
        if n % 2 == 0:
            raise ValueError("n=%d is even" % n)
        elif n == 5:
            raise AttributeError("n=%d is five" % n)
        print "n=%s is ok" % n
    foo = exception_wrapper(foo, ValueError, None)

    def bar(self, n):
        self.foo(n)
    bar = exception_wrapper(bar, (ValueError, AttributeError), None)
# end A