python 动态调用函数时,在被调用函数中捕获具体异常

发布时间 2023-03-22 21:16:32作者: zhihengLi

背景:

有一个test接口如下,主要作用就是通过两个入参,去动态的调用某个文件的某个方法

def test(pyname, method):
    """
    :param pyname: 文件名称
    :param method: 方法名
    """
    pass

如果直接在该test接口文件内捕捉异常,只能捕捉到test接口自身出现问题的代码,无法捕捉到动态调用的那个文件的那个方法

 

解决方法:

另起一个py文件,编写自定义装饰器

import traceback
def catch_exceptions(method):
    '''
    捕获异常自定义装饰器
    '''
    def wrapper(*args, **kw):
        try:
            return method(*args, **kw)
        except Exception as e:
            print("*********************捕获异常信息*********************")
            return traceback.format_exc() #也可以用print_exc直接打印,format_exc返回的是字符串
return wrapper

在需要的文件处引用装饰器

@catch_exceptions
def test_b():
    ...
    pass