我有一个类,它的方法要求某个类字段正确存在。类字段是在构造函数中设置的,它从配置文件中读取,它可能从该配置文件中获取正确的数据,也可能无法从该配置文件中获取正确的数据。如果数据不正确,则类字段中的数据将错误,类方法将引发异常。在
如果发生这种情况,我要做的是再次运行该方法,但使用对类构造函数的不同调用。在一个尝试:接住?因为即使使用正确的类字段,该方法也可能引发相同的异常。所以我想要的是在第一次调用方法时捕获异常,然后再次运行该方法。但是在第二次运行时,如果抛出异常,我希望它传播。所以:
try:
MyClass().method()
except MyException:
MyClass(True).method()
这个有明显的缺陷吗?或者一个更好的方法来做到这一点而不使用计数器、标志或其他难看的辅助对象?在
您所做的很好;如果该方法从异常处理程序中抛出相同的异常,那么它将被传播,而不会被同一处理程序捕获。在
听起来你好像在说Factory method。我将创建一个单独的Creator类来处理这种情况。在
我有点惊讶,您不想让
MyClass
实例留待以后使用,但是,考虑到这是您的意图,您的代码是正确和简洁的,它可以满足您的要求,而没有任何“明显的缺陷”。我不知道你觉得哪些对象难看,哪些对象好看,但是如果不介绍一些“辅助对象”,我甚至想不出其他方法来达到你所说的要求!-)相关问题 更多 >
编程相关推荐