片段 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
的语句执行此操作。
原文由 Elmo 发布,翻译遵循 CC BY-SA 4.0 许可协议
在 Python 3.4 及更高版本中,您可以使用
contextlib.suppress
:或者,
fuckit
。