Daniel Roy Greenfeld

Daniel Roy Greenfeld

About | Articles | Books | Jobs | News | Tags

Exceptions as Decorator Arguments

I wanted to see if I could have an exception as a decorator argument. Here is what I came up with:

import functools

class MyGoof(Exception):
    pass

def pass_goof(exception):
    def decorator(test_func):
        @functools.wraps(test_func)
        def wrapper(*args, **kwargs):
            try:
                return test_func(*args, **kwargs)
            except exception as e:
                return None
        return wrapper
    return decorator

@pass_goof(MyGoof)
def test1():
    return "test1"

@pass_goof(MyGoof)
def test2():
    raise MyGoof

assert test1() == 'test1'
assert test2() == None

Tags: python howto
← Back to home