borgend/exprotect.py

Fri, 16 Feb 2018 23:25:30 +0000

author
Tuomo Valkonen <tuomov@iki.fi>
date
Fri, 16 Feb 2018 23:25:30 +0000
changeset 115
df0de44d2c4b
parent 106
a7bdc239ef62
permissions
-rw-r--r--

Changed one .debug message to .info

#
# 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

mercurial