###前提・実現したいこと
ReactiveProperty+ReactiveExtensionsでWPFアプリケーションを作成しています。
メソッドチェイン中、例外発生した時に各メソッドでTryCatchせずにシーケンスを終了させないようにするにはどうすればよいでしょうか?
###試したこと
この例ではメソッドチェイン中に例外エラーが発生した場合にシーケンスが終了されます。
以降プロパティ値に変化があってもSubscribeにデータが流れていきません。
VB
1Dim reactiveProperty As ReactiveProperty(Of String) 2reactiveProperty. 3 Do(Sub(x) Throw New Exception). 4 Where(Function(x) Not String.IsNullOrWhiteSpace(x)). 5 SubScribe()
TryCatchすればシーケンスを終了させないようにできましたが、全てのメソッドに記述するのはとても面倒です。
VB
1reactiveProperty. 2 Do(Sub(x) 3 Try 4 Throw New Exception 5 Catch ex As Exception 6 End Try 7 End Sub). 8 Where(Function(x) 9 Try 10 Not String.IsNullOrWhiteSpace(x) 11 Catch ex As Exception 12 End Try 13 End Function). 14 SubScribe()
どこかに集約できないかと思い、Catchメソッドを使いました。
このサイトによれば
Rxでは、IObservable<T>シーケンスの終了はOnCompletedもしくはOnErrorが発生したとき、と決まっています。
とのことなのでCatch後にObservable.Never(Of T)()を返すようにしましたが、シーケンスが終了してしまいました。
VB
1reactiveProperty. 2 Do(Sub(x) Throw New Exception). 3 Where(Function(x) Not String.IsNullOrWhiteSpace(x)). 4 Catch(Function(x As Exception) Observable.Never(Of String)()). 5 SubScribe()
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/08/21 06:10