python 动态调用函数时,在被调用函数中捕获具体异常
背景:
有一个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