尝试不同的功能,直到没有异常,然后继续

问题描述

我的项目有3个步骤。第一个和最后一个永远不会改变。第二个需要遍历多个功能,直到没有异常,然后再转到第三个。

所以基本上:

func1()
func2a() #if exception move to func2b(),if no exception move to func3()
func2b() #if exception move to func2c(),if no exception move to func3()
func2c() #if exception move back to func2a(),if no exception move to func3()
func3() #if executes,break

我尝试了多个try/except,但没有运气

解决方法

我认为您可以通过将功能打包到列表中来轻松实现目标。然后,只要有例外,就在列表上进行迭代并执行。要获得循环效果(从2a返回到2c,可以使用itertools.cycle

from itertools import cycle

funcs = [func2a,func2b,func2c,...]

func1()
for func in cycle(funcs):
    try:
        func()
    except:
        continue
    else:
        break
func3()
,

我认为这段代码可以为您提供帮助:

f1()
while True:
        try:
            fa()
            break
        except:
            try:
                fb()
                break
            except:
                try:
                    fc()
                    break
                except:
                    pass
            
f3()

或者您可以使用像这样的变量:

func1()
x = 'a'
while True:
    if x == 'a':
        try:
            func2a()
            break
        except:
            x = 'b'
    elif x == 'b':
        try:
            func2b()
            break
        except:
            x = 'c'
    else:
        try:
            func2c()
            break
        except:
            x = 'a'           
func3()