--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/borgend/exprotect.py Mon Feb 05 10:25:17 2018 +0000 @@ -0,0 +1,31 @@ +# +# Borgend by Tuomo Valkonen, 2018 +# +# Except-catching decocators to catch bugs in callbacks +# + +import logging + +logger=logging.getLogger(__name__) + +def protect_noreturn(fn): + name=fn.__name__ + def wrapper(*args, **kwargs): + try: + fn(*args, **kwargs) + except: + logger.exception('bug in ' + name) + return wrapper + + +def protect_return(default): + def wrap(fn): + name=fn.__name__ + def wrapper(*args, **kwargs): + try: + return fn(*args, **kwargs) + except: + logger.exception('bug in ' + name) + return default + return wrapper + return wrap