我有一个具有多个功能的课程。这些函数将处理类似的异常。我可以使用处理函数并将其分配给函数。
最后,我希望函数中不应该有异常处理,但是在异常时控件应该转到这个处理函数。
Class Foo:
def a():
try:
some_code
except Exception1 as ex:
log error
mark file for error
other housekeeping
return some_status, ex.error
except Exception2 as ex:
log error
mark file for error
other housekeeping
return some_status, ex.error
同样,其他功能也有同样的例外。我想在一个单独的方法中进行所有这些异常处理。只是函数应该将控件移交给异常处理函数。
我可以考虑从包装器处理函数调用每个函数。但这对我来说非常奇怪。
Class Foo:
def process_func(func, *args, **kwargs):
try:
func(*args, **kwargs)
except Exception1 as ex:
log error
mark file for error
other housekeeping
return some_status, ex.error
except Exception2 as ex:
log error
mark file for error
other housekeeping
return some_status, ex.error
def a(*args, **kwargs):
some_code
有没有更好的方法呢?
答案 0 :(得分:3)
您可以定义一个函数装饰器:
def process_func(func):
def wrapped_func(*args, **kwargs):
try:
func(*args, **kwargs)
except ...
return wrapped_func
并用作:
@process_func
def func(...):
...
因此func(...)
相当于process_func(func)(...)
,错误在wrapped_func
内处理。