如何尝试平面样式的几种方法?

Thu*_*rEX 3 python coding-style nested flat

如果我想尝试很多方法来避免一些错误,我可以写:

try:

    try:
        trial_1()
    except some_error:
        try:
            trial_2()
        except some_error:
            try:
                trial_3()
            ...
    print "finally pass"

except some_error:
    print "still fail"
Run Code Online (Sandbox Code Playgroud)

但是有太多的试验,所以太多的巢,如何以平面样式写它?

Abe*_*lus 5

如果每次都是相同的例外,你可以这样做

for task in (trial_1, trial_2, trial_3, ...):
    try:
        task()
        break
    except some_error:
        continue
Run Code Online (Sandbox Code Playgroud)

如果知道它是否成功很重要,那么最简单的方法就是添加它

successful = False
for task in (trial_1, trial_2, trial_3, ...):
    try:
        task()
        successful = True
        break
    except some_error:
        continue
if successful:
    ...
else:
    ...
Run Code Online (Sandbox Code Playgroud)

  • 而不是成功的标志,你可以简单地使用`for ... else`.看我的回答. (2认同)