带有 try except 块的 else 语句

If else statement with try except block

我有一个要修改的 try/except 代码块和 if/else 将执行部分代码并跳过其他代码的语句。

这是我现在的逻辑存根:

if arg1 == 'None':
    do something
else:
    do something else

try:
    execute main code
except:
    update failed status

execute_seperate_function(arg)

我想要做的是,如果代码按原样进入第一个 if statement,然后 运行 try/except 和最后一个函数。但是,如果它进入 else statement 我想 运行 try 代码原样,但跳过执行 except 和最后一个函数。

有什么好方法可以做到这一点,而不是将所有内容都放在 if/else 语句中并使代码变得非常混乱?感谢您的帮助!

可以使它成为一个像下面这样的函数,带有一个标志参数来确定是否

def task(flag):
    if (flag == True):
        try:
            execute main code
        except:
            update failed status
        execute_seperate_function(arg)
    else:
        execute main code

if arg1 == 'None':
    task(True)
else:
    task(False)

那是不是更整洁了?取决于我想 do something 是什么。

在某种程度上,这可以通过跨函数拆分逻辑来实现:

def do_something():
    try:
        execute_main_code()
    except Exception:
        update_failed_status()
    execute_separate_function(arg)


def do_something_else():
    execute_main_code()


def execute_main_code():
    pass


def update_failed_status():
    pass


def execute_separate_function(arg):
    pass


if arg1 == "None":
    do_something()
else:
    do_something_else()

首先,将你认为的'execute main code'放入一个函数中,我们可以任意调用'main':

def main:
    execute main code

if arg1 == 'None':
    try:
        main() # execute main code
    except Exception:
        update failed status
    execute_seperate_function(arg) # called whether there was an exception or not
else:
    main() # just exec main code without try block