一尘不染

python捕获异常并继续尝试阻止

python

发生异常后,我可以返回执行try块吗?(目标是写得更少)例如:

try:
    do_smth1()
except:
    pass

try:
    do_smth2()
except:
    pass

try:
    do_smth1()
    do_smth2()
except:
    ??? # magic word to proceed to do_smth2() if there was exception in do_smth1

阅读 168

收藏
2020-12-20

共1个答案

一尘不染

不,你不能那样做。这就是Python具有其语法的方式。一旦由于异常而退出try块,就无法返回。

那for循环呢?

funcs = do_smth1, do_smth2

for func in funcs:
    try:
        func()
    except Exception:
        pass  # or you could use 'continue'

但是请注意,裸露裸露是不明智的做法except。您应该改为捕获特定的异常。我Exception之所以这么做,是因为在不知道方法可能会抛出什么异常的情况下,这是我所能做的。

2020-12-20