【发布时间】:2012-08-30 22:37:43
【问题描述】:
我有几个不同的类,它们的实例化成本相对较高,并且它们的方法可以正常工作,直到其中一个抛出,此时保留对象是没有意义的,因为状态在某种程度上被搞砸了。
我通常只会记住一个实例化对象的函数,但在这种情况下这不起作用,因为 memoize 装饰器只知道实例化时的对象,它不知道每个方法调用。
我该如何解决这个问题?是否可以创建一个装饰器,单独包装所有方法并在其中一个抛出时实例化一个新对象?
【问题讨论】:
-
这些是抓到还是没抓到?
-
有时被抓,有时未被抓。我绝对希望这取决于来电者。这里的关键是,如果最后一次调用没有抛出异常,则应该再次使用调用该方法的对象。