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

标签 python exception

我有一个类,其方法要求某个类字段正确存在。该类字段在构造函数中设置,并从配置文件中读取,并且它可能会也可能不会从该配置文件中获取正确的数据。如果数据不正确,类字段中就会有错误的数据,并且类方法会抛出异常。

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


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

这有明显的缺陷吗?或者在不使用计数器、标志或其他丑陋的辅助对象的情况下实现此目的的更好方法?

最佳答案

我有点惊讶的是,您不希望 MyClass 实例保留下来供以后使用,但是,考虑到这是您的意图,您的代码是正确且简洁的 - 它做你想要的,没有任何“明显的缺陷”。我不确定您认为哪些对象丑陋,哪些对象漂亮,但是如果不引入一些“辅助对象”,我什至想不出另一种方法来实现您所说的要求!-)

关于python - 使用 try/catch 重试相同的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3833378/

相关文章:

python - 将函数的返回值赋给变量

python 无法理解通过 Winsock 发送的 C++ 字符串

python - Mac osx lion、virtualenv、pil 安装 - gcc 错误

java - JOptionPane 中的文本换行?

c# - 使用 .Number 捕获 mysql 异常

python - Python 方法 *argument* 的双下划线

python - 在 Python 中将 zip 列表保存到 csv

java - 这是一种在 Spring Boot 中停止打印 AmqpRejectAndDontRequeueException 堆栈跟踪日志的方法吗?

c++ - 当异常处于事件状态时,GCC (libstdc++) 运行时如何决定终止()

java - 抛出异常但没有 "Exception in thread..."