使用try/catch重试相同的方法

2024-09-28 03:15:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个类,它的方法要求某个类字段正确存在。类字段是在构造函数中设置的,它从配置文件中读取,它可能从该配置文件中获取正确的数据,也可能无法从该配置文件中获取正确的数据。如果数据不正确,则类字段中的数据将错误,类方法将引发异常。在

如果发生这种情况,我要做的是再次运行该方法,但使用对类构造函数的不同调用。在一个尝试:接住?因为即使使用正确的类字段,该方法也可能引发相同的异常。所以我想要的是在第一次调用方法时捕获异常,然后再次运行该方法。但是在第二次运行时,如果抛出异常,我希望它传播。所以:


try:
    MyClass().method()
except MyException:
    MyClass(True).method()

这个有明显的缺陷吗?或者一个更好的方法来做到这一点而不使用计数器、标志或其他难看的辅助对象?在


Tags: 数据方法true标志配置文件错误myclass计数器
3条回答

您所做的很好;如果该方法从异常处理程序中抛出相同的异常,那么它将被传播,而不会被同一处理程序捕获。在

听起来你好像在说Factory method。我将创建一个单独的Creator类来处理这种情况。在

我有点惊讶,您不想让MyClass实例留待以后使用,但是,考虑到这是您的意图,您的代码是正确和简洁的,它可以满足您的要求,而没有任何“明显的缺陷”。我不知道你觉得哪些对象难看,哪些对象好看,但是如果不介绍一些“辅助对象”,我甚至想不出其他方法来达到你所说的要求!-)

相关问题 更多 >

    热门问题