如果出现异常/错误,如何不在python中停止执行其他函数

fea*_*rix 3 python exception-handling decorator python-2.7

我在python中有一个脚本,其工作方式如下所示.每个功能执行完全不同的任务,彼此无关.我的问题是如果function2()在执行过程中遇到问题,那么function3(),function4(),function5()将不会执行.我知道你会说通过捕获异常(try..except)来处理这个问题但是我必须抓住每个我不想要的异常.简而言之,如果任何函数有问题,我如何编码我的其他函数不受影响的地方.理想情况下,它应排除有问题的功能,并让其他功能执行.

def function1():
    some code

def function2():
    some code

def function3():
    some code

def function4():
    some code

def function5():
    some code

if __name__ == '__main__':
    function1()
    function2()
    function3()
    function4()
    function5()
Run Code Online (Sandbox Code Playgroud)

Moi*_*dri 6

无需编写多个try/except.创建一个函数列表并执行它们.例如,您的代码应该是:

if __name__ == '__main__':
    func_list = [function1, function2, function3, function4, function5]

    for my_func in func_list:
        try:
            my_func()
        except:
            pass
Run Code Online (Sandbox Code Playgroud)

或者,创建一个装饰器并将该装饰添加到您的每个功能中.查看Python函数装饰器的指南.例如,你的装饰者应该是这样的:

def wrap_error(func):
    def func_wrapper(*args, **kwargs):
        try:
           return func(*args, **kwargs)
        except:
           pass
    return func_wrapper
Run Code Online (Sandbox Code Playgroud)

现在添加带有函数定义的装饰器:

@wrap_error
def function1():
    some code
Run Code Online (Sandbox Code Playgroud)

添加了这个装饰器的功能不会引起任何影响 Exception