我正在尝试创建通用异常处理程序 - 我可以设置一个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)
但是以更加pythonic的方式
答案 0 :(得分: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__