如何在python的一个块中编写多个try语句?

发布于 2021-01-29 17:23:25

我想要做:

try:
    do()
except:
    do2()
except:
    do3()
except:
    do4()

如果do()失败,则执行do2(),如果do2()也失败,则执行do3(),依此类推。

最好的祝福

关注者
0
被浏览
164
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    first()为此编写了一个快速包装函数。

    用法value = first([f1, f2, f3, ..., fn], default='All failed')

    #!/usr/bin/env
    
    
    def first(flist, default=None):
    
        """ Try each function in `flist` until one does not throw an exception, and
        return the return value of that function. If all functions throw exceptions,
        return `default`
    
        Args: 
            flist - list of functions to try
            default - value to return if all functions fail
    
        Returns:
            return value of first function that does not throw exception, or
            `default` if all throw exceptions.
    
        TODO: Also accept a list of (f, (exceptions)) tuples, where f is the
        function as above and (exceptions) is a tuple of exceptions that f should
        expect. This allows you to still re-raise unexpected exceptions.
        """
    
        for f in flist:
            try:
                return f()
            except:
                continue
        else:
            return default
    
    # Testing.
    
    def f():
        raise TypeError
    
    def g():
        raise IndexError
    
    def h():
        return 1
    
    
    # We skip two exception-throwing functions and return value of the last.
    assert first([f, g, h]) == 1
    
    assert first([f, g, f], default='monty') == 'monty'
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看