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"
但是有太多的试验,所以太多的巢,如何以平面样式写它?
如果每次都是相同的例外,你可以这样做
for task in (trial_1, trial_2, trial_3, ...):
    try:
        task()
        break
    except some_error:
        continue
如果知道它是否成功很重要,那么最简单的方法就是添加它
successful = False
for task in (trial_1, trial_2, trial_3, ...):
    try:
        task()
        successful = True
        break
    except some_error:
        continue
if successful:
    ...
else:
    ...