在不干扰try语句

时间:2018-03-09 07:36:26

标签: python-2.7 return-value try-finally

好吧,所以我的情况是必须在try语句中按特定顺序执行序列,如果任何步骤失败,则必须返回返回值。还有一个最终声明,我执行某种“回到安全状态 - 如果 - 任何 - 失败”'也必须按特定顺序执行的序列。对于每个步骤(try和finally语句),如果失败,则必须记录某种消息,原因是它失败并且此时必须停止执行。最终语句中的序列返回值对我来说并不重要(我只对try语句的返回值感兴趣)。这就是我决定处理它的方式:

def whatever():
    ret_val = True
    try:
        x = foo()
        if isinstance(x, str):
            print "%s" % x
            ret_val = False
            return

        y = bar()
        if isinstance(y, str):
            print "%s" % y
            ret_val = False
            return
    finally:
        a = safe_state_step_1()
        if isinstance(a, str):
            print "%s" % a
            return ret_val

        b = safe_state_step_2()
        if isinstance(b, str):
            print "%s" % b
            return ret_val
        return ret_val

我想知道是否有更多的pythonic' /'更聪明的'处理这种情况的方式?

0 个答案:

没有答案