Si vous ne voulez pas enchaîner (un grand nombre) de clauses try-except, vous pouvez essayer vos codes dans une boucle et vous arrêter au premier succès.
Exemple avec des codes qui peuvent être mis dans des fonctions :
for code in (
lambda: a / b,
lambda: a / (b + 1),
lambda: a / (b + 2),
):
try: print(code())
except Exception as ev: continue
break
else:
print("it failed: %s" % ev)
Exemple avec des codes arbitraires (déclarations) directement dans la portée actuelle :
for i in 2, 1, 0:
try:
if i == 2: print(a / b)
elif i == 1: print(a / (b + 1))
elif i == 0: print(a / (b + 2))
break
except Exception as ev:
if i:
continue
print("it failed: %s" % ev)