我正在寻找最好的方法,如何在python(2.6)中编写wrap函数。此函数将命令(函数调用)作为参数,并在该调用未顺利(返回错误值)时终止脚本。我看到的主要问题是当嵌套调用失败时,wrap必须检测此事件并终止脚本。 例如
def foo1(x):
y = foo2(x)
return y
def foo2(y):
y = 2**y
return y
然后我使用这样的包裹:
wrap(foo1(2))
请将此示例视为极为简化。
事情是,即使在foo2中,wrap必须检测何时发生错误。
答案 0 :(得分:0)
除非您开始使用Python的字节码,否则没有明确的方法来执行您的要求。即使这样,也不清楚错误检测是什么意思,因为你可能想从你的代码中调用其他函数,比如计算一个数字的sqrt
:
>>> def foo3(y):
... y = sqrt(5)
... return y
...
sqrt
上的错误是什么意思?
测试代码的两种最常用方法是:
(1)只关心一个单一的价值。如果要测试多个功能,请分别测试每个功能:
wrap(foo1(2))
wrap(foo2(2))
wrap(foo3(2))
(2)使用例外。每个函数负责发出错误信号,并从包装中检测到错误:
def wrap(f, args, kwargs={}):
try:
f(*args, **kwargs)
except:
print("Error on f")
def main():
wrap(foo1, (2, ))
wrap(foo2, (2, ))
wrap(foo3, (2, ))