How not to stop the execution of other function in python in case of Exception/Error

蹲街弑〆低调 提交于 2019-11-28 12:46:45

No need to write multiple try/except. Create a list of your function and execute them. For example, you code should be like:

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

    for my_func in func_list:
        try:
            my_func()
        except:
            pass

OR, create a decorator and add that decorator to each of your function. Check A guide to Python's function decorators. For example, your decorator should be like:

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

Now add this decorator with your function definition as:

@wrap_error
def function1():
    some code

Functions having this decorator added to them won't raise any Exception

You can use exception and catch all sort of exceptions like this

if __name__ == '__main__':
    try:
        function1()
    except:
        pass
    try:
        function2()
    except:
        pass    
    try:
        function3()
    except:
        pass    
    try:
        function4()
    except:
        pass

for large number of functions you can use

func_dict = {
 func1 : {
     param1 : val
     param2 : val
   },
 func1 : {
     param1 : val
     param2 : val
   }
}

thus you can iterate over the keys of the dictionary for the function and iterate on the parameters

As of Python 3.4, a new context manager as contextlib.suppress is added which as per the doc:

Return a context manager that suppresses any of the specified exceptions if they occur in the body of a with statement and then resumes execution with the first statement following the end of the with statement.

In order to suppress all the exceptions, you may use it as:

from contextlib import suppress

if __name__ == '__main__':
    with suppress(Exception):  # `Exception` to suppress all the exceptions
        function1()
        function2()
        # Anything else you want to suppress
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!