假设有 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
@error
def a():
print( 1 / 0)
@error
def b():
print(0 / 1)
@error
def c():
print('1111')
这样看问题勉强是解决了,但是每个函数头上都顶个装饰器,感觉有点二,所以问问有没有更优雅的实现方法
实际上的代码是运行一堆爬虫,每个爬虫都是不同的网页,有可能会报错,但是我不想让单个网页的报错影响到其他爬虫的执行
伊谢尔伦2017-04-18 10:31:25
당신이 원하는 "더 우아한 구현 방법"이 무엇인지 모르겠습니다. 모든 기능에 대한 오류를 무시하는 것은 본질적으로 우아하지 않습니다.
물론 다음과 같은 함수를 작성할 수도 있습니다.
으아악그럼 다음과 같이 전화하세요.
으아악