是否可以設計一個Rx運算符來吞食同一序列中的重複異常(與Retry或Catch不同)?本質上與.Select(x => x)相同,但忽略了一路上的異常。 (我知道這是違反準則)。吞嚥IObservable異常
回答
簡短答案是「否」。
稍微短一點的答案是你的前提是有缺陷的;這是因爲你不能有一個Observable拋出多個錯誤,而你假設的操作符將是一個Observer。根據定義,觀察者不應該影響觀察者(只是不要告訴Heisenberg我說過)。
因此,這樣的操作在邏輯上是不可能的,因爲它需要改變歷史 - 回去阻止你可觀察到從以往已經拋出的異常。當然,除非你的Observable打破了Rx的規則。
不要讓它做。 :) Rx無論如何都會做好阻止這件事的工作。例如,Subject<T>
就是在第一個OnError之後不會發布。
所有的Rx操作符都遵循指導原則(它們保證您只會收到一個錯誤,然後可以完成觀察)。所以任何通過Reactive庫創建的observable將永遠不會被允許通過以允許多個錯誤。
您需要編寫自己的自定義實現IObservable<T>
和您自己的自定義運算符(它沒有使用任何Reactive運算符)來實現您想要的。
但我不建議在沒有進一步設計工作的情況下走下去。你真的想要達到什麼目標,你是否可能將問題建模錯誤?如果您預計會出現多個錯誤,那麼您可能應該將這些錯誤作爲數據通過Observable發送,而不是作爲特殊條件。即在源處捕獲異常並通過其OnNext
方法將其發送到IObserver<Exception>
。
或者,爲了處理多個錯誤,您可能需要調查嵌套序列,即IObservable
- 1. PHP吞嚥異常
- 2. 吞嚥不正常
- 3. 原型回調函數吞嚥異常
- 4. 難怪VS2012異常吞嚥噩夢
- 5. 吞吞JDBC異常
- 6. 吞嚥注入不能正常工作
- 7. CellTable點擊吞嚥
- 8. UIStepper吞嚥觸摸
- 9. C++吞嚥錯誤
- 10. AdxStudio CrmEntityFormView吞嚥Microsoft.Xrm.Sdk.SaveChangesException
- 11. 重複在吞嚥
- 12. java.util.logging.Logger吞嚥日誌
- 13. VSTO Excel AddIn使用企業庫吞嚥異常
- 14. 查找在VS2013 C#代碼中的異常隱藏/吞嚥
- 15. 吞嚥異常移除拋出它的性能打擊嗎?
- 16. 如何吞嚥JSF 1.2/Mojarra中的異常
- 17. Java:如何在吞嚥後調用以前的方法異常
- 18. Python的發電機,在「協程」非吞嚥異常
- 19. WPF ShowDialog在窗口加載期間吞嚥異常
- 20. 在拖動監聽器中引發JavaFX靜默吞嚥異常
- 21. 吞嚥連接不起作用吞嚥手錶
- 22. 在我的吞嚥任務中運行包的吞嚥任務
- 23. 運行吞嚥圖像時吞嚥錯誤
- 24. Openshift和建設與吞嚥
- 25. 禁用右括號吞嚥?
- 26. 吞嚥看不正確
- 27. Express和BrowserSync沒有吞嚥?
- 28. Redux佐賀,錯誤吞嚥
- 29. 茉莉花吞嚥插件
- 30. Npm吞嚥咕嚕區別?
你在說什麼情況,其中'IObserver .OnError'被稱爲不止一次? –
也許你可以發佈你的場景?正確的答案可能是一個稍有不同的問題。 –