很多时候我发现自己写的东西看起来像这样:
try:
procedure_a()
except WrongProcedureError:
try:
procedure_b()
except WrongProcedureError:
try:
procedure_c()
except WrongProcedureError:
give_up()
这太可怕了。有没有一种更优雅的方式来实现这种“尝试直到没有例外”的逻辑?好像这种事经常出现;我希望有一些我不知道的语言功能是专门为这个事情而设计的。
您可以使用for/else
为此构造:
for proc in [procedure_a, procedure_b, procedure_c]:
try:
proc()
except WrongProcedureError:
continue
else:
break
else:
give_up()
The else
的条款for
仅当控制自然脱离 for 子句底部时循环才会触发。如果你break
out(如果三个过程中的任何一个没有抛出异常,您就会这样做),它不会触发。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)