C# onError不在订阅可观察c中工作
我有这个代码示例源代码 我对GetException和onError的代码做了一些修改,如:C# onError不在订阅可观察c中工作,c#,reactive-programming,C#,Reactive Programming,我有这个代码示例源代码 我对GetException和onError的代码做了一些修改,如: IObservable<int> source = Observable.Range(1, 10); IDisposable subscription = source.Subscribe<int>( onNext => { int zero = 0;
IObservable<int> source = Observable.Range(1, 10);
IDisposable subscription = source.Subscribe<int>(
onNext =>
{
int zero = 0; //added this code
var div = onNext / zero; //and this code for get execption
},
onError =>
{
Console.WriteLine("OnError: {0}", onError.Message); // This code never runs
});
subscription.Dispose();
如何将异常设置为onError?这里的onError应该捕获源发出的异常错误,而不是回调onNext发出的异常错误
我想说的是尝试。。。在onNext中捕获是通常的方法,尽管您希望在onError中重用错误处理是可以理解的
如果您想在这里强制使用这种模式,您可以通过管道将您的可观察对象传递给另一个执行您想要捕获的代码的人,例如do,并订阅可观察的结果
比如:
IObservable<int> source = Observable.Range(1, 10);
IDisposable subscription = source.Do(_ =>
{
// Here goes the code you had in your 'onNext' originally
throw new Exception("Throw exception manually for test purposes.");
})
.Subscribe(
_ => { /* nothing to do */ },
error =>
{
Console.WriteLine("OnError: {0}", error.Message);
}
);
相关问答:
我不认为这是一个完全重复的问题,但有一部分与这个问题重叠,IMO这里的onError应该捕获源发出的异常错误,而不是回调onNext发出的异常错误
我想说的是尝试。。。在onNext中捕获是通常的方法,尽管您希望在onError中重用错误处理是可以理解的
如果您想在这里强制使用这种模式,您可以通过管道将您的可观察对象传递给另一个执行您想要捕获的代码的人,例如do,并订阅可观察的结果
比如:
IObservable<int> source = Observable.Range(1, 10);
IDisposable subscription = source.Do(_ =>
{
// Here goes the code you had in your 'onNext' originally
throw new Exception("Throw exception manually for test purposes.");
})
.Subscribe(
_ => { /* nothing to do */ },
error =>
{
Console.WriteLine("OnError: {0}", error.Message);
}
);
相关问答:
我不认为这是一个完全重复的问题,但有一部分与这个问题重叠,IMOFYI,这里的一个错误是捕获源发出的异常错误,而不是通过您的回调onNext。当我在onNext中操作时,源会发生什么预期?我如何处理onNext异常而不使用try/catch和if?FYI,这里的onError是捕获源而不是回调onNext发出的异常错误。当我在onNext中执行操作时,对源的期望是什么?我如何在不使用try/catch和if的情况下处理onNext异常?