【发布时间】:2010-11-23 12:47:47
【问题描述】:
我有一些测试用例。测试用例依赖于需要时间计算的数据。为了加快测试速度,我已经缓存了数据,这样就不必重新计算了。
我现在有foo(),它查看缓存的数据。我无法提前知道它会看到什么,因为这在很大程度上取决于测试用例。
如果测试用例由于找不到正确的缓存数据而失败,我不希望它失败 - 我希望它计算数据然后重试。我也不知道特别是什么异常会引发丢失数据的原因。
我现在的代码如下所示:
if cacheExists:
loadCache()
dataComputed = False
else:
calculateData()
dataComputed = True
try:
foo()
except:
if not dataComputed:
calculateData()
dataComputed = True
try:
foo()
except:
#error handling code
else:
#the same error handling code
重构这段代码的最佳方式是什么?
【问题讨论】:
-
为什么要检查第一个条件除外?从你的下一次尝试/例外开始,然后在第二次除外,将它打破到 handleError() 不是更有意义吗?
-
哦,嗯..我明白你的意思。试试看
-
不,因为如果条件为假,我将毫无例外地处理(因为它会被捕获)
标签: python exception exception-handling code-formatting