在reference guide的错误处理部分,我阅读并理解以下注释,即使错误是通过错误处理操作符处理的,原始序列也会终止。有没有办法处理错误,如流中的错误被值替换,原始序列继续?
"在您了解错误处理操作符之前,您必须记住,反应序列中的任何错误都是终端事件。即使使用了错误处理运算符,它也不允许原始序列继续,而是将onError信号转换为新序列的开头(回退序列)。因此,它取代了上游终止的序列。"
我可以看到流中只有一些坏元素的情况(包括我的用例),我们不希望因此而终止整个流。
例如在下面的代码中,假设n = 2是一个坏的情况,我只是想要优雅地处理它而不是终止流。可能是我在这里缺少一些基本的东西。
In [55]: import numpy as np
In [56]: import pandas as pd
In [57]: s = pd.Series(np.random.randn(5))
In [58]: s
Out[58]:
0 0.152037
1 0.194204
2 0.296090
3 1.071013
4 -0.324589
dtype: float64
In [59]: s.nsmallest(3) ## s.drop_duplicates().nsmallest(3); if duplicates exists
Out[59]:
4 -0.324589
0 0.152037
1 0.194204
dtype: float64
In [60]: s.nlargest(3) ## s.drop_duplicates().nlargest(3); if duplicates exists
Out[60]:
3 1.071013
2 0.296090
1 0.194204
dtype: float64
答案 0 :(得分:1)
如果您只想重新订阅observable,可以使用retry()
运算符。当检测到错误时,它将重新订阅observable。有些变体需要重试计数,或根据Throwable
提供不同的响应。
编辑:Observables 已定义以在发生错误时终止。因此,在您的示例中,您可能必须将错误包装在容器中,以便在识别错误时继续执行,而不是在此时抛出错误。