1

我正在尝试创建通用异常处理程序 - 我可以在其中设置一个 arg 以在发生异常时返回。

而不是这样做:

try:
    ...
except Exception:
    return list()

try:
    ...
except Exception:
    return dict()

try:
    ...
except Exception:
    return str()

我想创建一个系统,我有一个通用的异常处理程序,它返回我提供的 arg。例如,

def handler(code, default):
    try:
        code
    except Exception:
        return default

def mains():
    code = <code to execute>
    default = str()
    return handler(code, dafault)

但以更蟒蛇的方式

4

1 回答 1

4

一个简单的装饰器将为您完成此操作。

import functools


def catch_wrap(on_err):
    def wrapper(func):
        @functools.wraps(func)
        def inner(*args, **kw):
            try:
                return func(*args, **kw)
            except Exception:
                return on_err
        return inner
    return wrapper

一个简短的例子:

@catch_wrap('SPAM!')
def doer():
    """
    YUP
    """
    1 / 0
    return 'EGGS!'


print doer()
print doer.__doc__
于 2012-11-03T23:09:33.307 回答