写多个尝试,除了在python中

Nic*_*ick 2 python try-catch

我想知道在python 中编写try.. except语句最优雅的方式是什么.假设我有这个代码:

with open(sys.argv[1]) as f:
    for line in f:
        try:
            do_1(line)
        except:
            pass
        try:
            do_2(line)
        except:
            pass
        try:
            do_3(line)
        except:
            pass
        ...
        ...
Run Code Online (Sandbox Code Playgroud)

写这个的最好方法是什么?我的行为是顺序的.但是,如果do_1失败,我仍然想要表演do_2.如果所有这些都在一个try.. except块中,那么如果do_1失败,我永远不会到达do_2.这是正确的方式,还是我可以except为所有d0_i行动都有一个?

use*_*ica 8

把它写成循环很简单:

for action in [do_1, do_2, do_3, ...]:
    try:
        action(line)
    except AppropriateExceptionType:
        pass
Run Code Online (Sandbox Code Playgroud)


Mar*_*cny 6

我会考虑你的try/except陈述的公共代码.就像是:

def run_safely(f, *args):
    try:
        f(*args)
    except SpecificException:
        # handle appropriately here
        pass

with open(sys.argv[1]) as f:
   for line in f:
       run_safely(do_1, line)
       run_safely(do_2, line)
       run_safely(do_3, line)
Run Code Online (Sandbox Code Playgroud)