Вы можете переписать логику, используя цикл, при условии, что все ваши обратные вызовы и резервные копии имеют одинаковый интерфейс API
for code in [somecode, fallbackcode, nextfallbackcode]:
try:
code(*args, **kwargs)
break
except Exception as Error:
continue
else:
raise HardException
Это предпочтительный способ вместо нескольких уровней вложенных блоков исключений.