При обработке исключений в python я часто повторяю код. Основной шаблон имеет вид:
try:
action_here()
except CommonException1:
Action_always_taken_for_CommonException1()
except CommonException2:
Action_always_taken_for_CommonException2()
except Exception:
Default_action_always_taken()
Что я хотел бы сделать, так это то, как абстрактный этот повторяющийся код вызывается функцией или классом. Я знаю, что один способ сделать это - вызвать функцию обработки исключений с объектом исключения, например:
try:
action_here()
except Exception as e:
handle_exception(e)
Затем в этой функции определите исключение, основанное на классе.
def handle_exception(e):
if type(e) == type(CommonException1()):
Action_always_taken_for_CommonException1()
elif type(e) == type(CommonException2()):
Action_always_taken_for_CommonException2())
else:
Default_action_always_taken()
Это, однако, кажется неуклюжим и неуклюжим. Итак, мой вопрос в том, каковы другие альтернативы обработке повторяющихся исключений?