borgend/exprotect.py

changeset 106
a7bdc239ef62
--- /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

mercurial