for/else.
else , for break.
approaches = ((first_approach, [arg1, arg2, ...], {'kwarg1':kwarg1, 'kwarg2':kwarg2, ...}, (Approach1Exception1, Approach1Exception2, ...)),
(second_approach, ..., ..., ...),
(third_approach, ..., ..., ...),
...)
for approach, args, kwargs, exceptions in approaches:
try:
approach(*args, **kwargs)
break
except exceptions:
pass
else:
give_up()