Source code for libb.exception

import sys
import traceback

__all__ = [
    'print_exception',
    'try_else',
]






[docs] def try_else(func, default=None): """Wrap function to return default value if it fails. :param func: Function to wrap. :param default: Default value or callable to return on failure. :returns: Wrapped function. Example:: >>> import json >>> d = try_else(json.loads, 2)('{"a": 1, "b": "foo"}') >>> d {'a': 1, 'b': 'foo'} >>> repl = lambda x: 'foobar' >>> d = try_else(json.loads, repl)('{"a": 1, b: "foo"}') >>> d 'foobar' """ def wrapper(*args, **kwargs): try: return func(*args, **kwargs) except: if callable(default): return default(*args, **kwargs) return default return wrapper
if __name__ == '__main__': __import__('doctest').testmod()