在出现异常/错误的情况下如何不停止在python中执行其他功能

发布于 2021-01-29 17:32:18

我在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()
关注者
0
被浏览
45
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    无需写多个try/except。创建一个函数列表并执行它们。例如,您的代码应类似于:

    if __name__ == '__main__':
        func_list = [function1, function2, function3, function4, function5]
    
        for my_func in func_list:
            try:
                my_func()
            except:
                pass
    

    或者,创建一个 装饰器, 然后将该装饰
    添加到每个函数中。检查Python函数装饰器指南。例如,您的装饰器应为:

    def wrap_error(func):
        def func_wrapper(*args, **kwargs):
            try:
               return func(*args, **kwargs)
            except:
               pass
        return func_wrapper
    

    现在,将此装饰器的函数定义添加为:

    @wrap_error
    def function1():
        some code
    

    添加了此装饰器的函数不会引发任何问题 Exception



知识点
面圈网VIP题库

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

去下载看看