您的位置:首页技术文章
文章详情页

python 运行多个函数,如何让单个函数的报错不影响其他函数的执行

浏览:33日期:2022-08-16 10:37:32

问题描述

假设有 a , b , c 三个函数需要执行,但是有可能会其中某个函数会报错

最初的写法是:

try: a() b() c()except: pass

这样写的问题是如果 b 报错了,c 也不会执行了,想到可以在函数内部定义 try ,由此想到用装饰器来搞:

def error(fun): def wrapped():try: fun()except: print(’这个函数出错了:%s’ % fun.__name__) return wrapped@errordef a(): print( 1 / 0)@errordef b(): print(0 / 1) @errordef c(): print(’1111’)

这样看问题勉强是解决了,但是每个函数头上都顶个装饰器,感觉有点二,所以问问有没有更优雅的实现方法

实际上的代码是运行一堆爬虫,每个爬虫都是不同的网页,有可能会报错,但是我不想让单个网页的报错影响到其他爬虫的执行

问题解答

回答1:

不知道你要的「更优雅的实现方法」是什么。忽略所有函数的错误本来就很不优雅了。

当然你可以写一个这种函数:

import tracebackdef run_with_ignorance(*funcs): for f in funcs: try: f() except Exception: traceback.print_exc()

然后这么调用:

run_with_ignorance(a, b, c)

标签: Python 编程