小编典典

在Python中继续错误恢复

python

片段1

do_magic() # Throws exception, doesn't execute do_foo and do_bar
do_foo()
do_bar()

片段2

try:
    do_magic() # Doesn't throw exception, doesn't execute do_foo and do_bar
    do_foo() 
    do_bar()
except:
    pass

片段3

try: do_magic(); except: pass
try: do_foo()  ; except: pass
try: do_bar()  ; except: pass

有没有一种方法可以优雅地编写代码片段3?

  • 如果do_magic()失败或没有,do_foo()do_bar()应该执行。
  • 如果do_foo()失败或失败,do_bar()应执行。

在Basic / Visual Basic / VBS中,有一个调用On Error Resume Next此操作的语句。


阅读 116

收藏
2020-12-20

共1个答案

小编典典

从Python
3.4开始,您可以使用contextlib.suppress

from contextlib import suppress

with suppress(Exception): # or, better, a more specific error (or errors)
    do_magic()
with suppress(Exception):
    do_foo()
with suppress(Exception):
    do_bar()

或者,fuckit

2020-12-20