chelovekmuravei
@chelovekmuravei
\(-_-)/ раз два три четыре

Выход из потока без множества проверок?

Допустим я запускаю в потоке функцию main, она что-то делает, при этом вызывая внутри себя другие функции sub_main_1,2,3... , а те другие и так далее. И на неком уровне main - sub_main_1 - sub_sub_... я ловлю ошибку, свою или например exception - нет доступа. Следовательно я хочу прервать выполнение потока. Это значит я должен вернуть результат (некий флаг False) из последней функции по цепочке (или использовать переменную класса, глобальную, сути не меняет), добавляя везде проверки после каждой функции. Как этого можно избежать?

def main():
    if not sub_main_1():
        return
    if not sub_main_2():
        return
    if not sub_main_3():
        return
  • Вопрос задан
  • 91 просмотр
Решения вопроса 1
ScriptKiddo
@ScriptKiddo
def sub_main_1():
    return 1


def sub_main_2():
    return 2


def sub_main_3():
    1 / 0


funcs = [sub_main_1, sub_main_2, sub_main_3]


def main():
    for func in funcs:
        try:
            if not func():
                return
        except Exception as e:
            print(e)
            return func, False


if __name__ == '__main__':
    print(main())


division by zero
(<function sub_main_3 at 0x000002679A31B318>, False)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы