【发布时间】:2020-03-10 10:01:46
【问题描述】:
我有以下错误处理程序(实际上是绕过器)装饰器 -
import functools
def exception_safe(*args):
ErrList = tuple(args)
def decorator(f):
@functools.wraps(f)
def wrapper(*args, **kwargs):
if ErrList:
try:
result = f(*args, **kwargs)
print(f'No error!')
return result
except ErrList as err:
print(f'got error!')
else:
try:
result = f(*args, **kwargs)
print(f'No error!')
return result
except Exception as err:
print(f'got error!')
return wrapper
return decorator
即使我仍然从我的 pytests 中得到下一个断言错误,告诉我函数名称是“装饰器”:
这可能是什么原因?我真的尝试了一切..
【问题讨论】:
-
有一种更简单的记录方法,使用
suppress,您可以告诉它要忽略哪些错误-docs.python.org/3/library/contextlib.html#contextlib.suppress。它会让你的包装更干净。