RxPY - 错误处理运算符
catch
此运算符会在出现异常时终止源可观察对象。
语法
catch(handler)
参数
handler:当源可观察对象出现错误时会发出此可观察对象。
返回值
它将返回一个可观察对象,该对象将包含来自源可观察对象的错误之前的的值及来自处理程序可观察对象的值。
示例
from rx import of, operators as op
from datetime import date
test = of(1,2,3,4,5,6)
handler = of(11,12,13,14)
def casetest(e):
if (e==4):
raise Exception('err')
else:
return e
sub1 = test.pipe(
op.map(lambda e : casetest(e)),
op.catch(handler)
)
sub1.subscribe(lambda x: print("The value is {0}".format(x)),
on_error = lambda e: print("Error : {0}".format(e)))
在此示例中,当源可观察对象的值为 4 时,我们创建了一个异常,因此,第一个可观察对象在此处终止,然后是处理程序的值。
输出
E:\pyrx>python testrx.py The value is 1 The value is 2 The value is 3 The value is 11 The value is 12 The value is 13 The value is 14
retry
出现错误时,此运算符将对源可观察对象进行重试,并且完成重试次数后将终止。
语法
retry(count)
参数
count:如果源可观察对象出现错误时,重试的次数。
返回值
它将根据指定的重试次数以重复序列的形式返回来自源可观察对象的可观察对象。
示例
from rx import of, operators as op
test = of(1,2,3,4,5,6)
def casetest(e):
if (e==4):
raise Exception('There is error cannot proceed!')
else:
return e
sub1 = test.pipe(
op.map(lambda e : casetest(e)),
op.retry(2)
)
sub1.subscribe(lambda x: print("The value is {0}".format(x)),
on_error = lambda e: print("Error : {0}".format(e)))
输出
E:\pyrx>python testrx.py The value is 1 The value is 2 The value is 3 The value is 1 The value is 2 The value is 3 Error: There is error cannot proceed!
广告