我有一个类,它的方法都需要一定的阶级场正确的存在。该类字段在构造函数中设置,它从配置文件读取,它可能会或可能不会从该配置文件中获取正确的数据。如果数据不正确,它将在类字段中包含错误的数据,并且类方法将抛出异常。使用一个try/catch重试相同的方法
如果出现这种情况,我想要做的就是再次运行方法,但用不同的调用类的构造函数。这是一个合理的处理方式:catch?因为即使使用正确的类字段,该方法也可能会抛出相同的异常。所以我想要的是第一次调用该方法时,会捕获该异常,然后该方法再次运行。但在第二次运行时,如果引发异常,我希望它传播。所以:
try:
MyClass().method()
except MyException:
MyClass(True).method()
有没有明显的缺陷呢?或者更好的方法来做到这一点,而不使用计数器,标志或其他丑陋的辅助对象?
从你所描述的东西,看起来正确的。 – 2010-09-30 18:00:43
为什么不直接写一个修正无效数据的正确的“构造函数”(实际上是一个初始化方法)?这就像“为什么在手刹时修理刹车?” – 2010-09-30 18:20:26
因为数据实际上是一个硬件地址,并测试它是尝试与设备对话,并等待它出现故障,它可以(有效),需要长达4秒,即使它没有失败的唯一途径。仅仅以正确的格式,而不是正确的地址检查地址是否是可行的(或有效的)是不可能的(或有效的)。简单地等待某个方法在与之通话时失败,然后重新获取该地址,效率会更高。 – Falmarri 2010-09-30 18:31:16