gpt4 book ai didi

reactiveui - 订阅 ReactiveAsyncCommand 不会在抛出异常时调用 OnError

转载 作者:行者123 更新时间:2023-12-04 05:17:41 27 4
gpt4 key购买 nike

我创建了一个 ReactiveAsyncCommand (SL5) 并且无法获得订阅来触发 OnError 方法。这是代码

        Start1Command = new ReactiveAsyncCommand();
Start1Command.RegisterAsyncObservable(_ => this.Start())
.Subscribe<int>(
u => Debug.WriteLine("OnNext-->" + u.ToString()),
ex => Debug.WriteLine("OnError-->" + ex.Message),
() => Debug.WriteLine("OnComplete-->")
);
Start1Command.Execute(null);

和开始的代码
 public IObservable<int> Start()
{
return Observable.Start(() =>
{
throw new Exception("Exception");
return 42;
},
RxApp.TaskpoolScheduler);
}

当我运行这段代码时,我从 ReactiveUI 框架中得到一个异常,这表明我应该订阅 ThrownExceptions。当我这样做时,我上面抛出的异常被正确处理。
 Start1Command.ThrownExceptions.Subscribe(ex => Debug.WriteLine("ThrownExceptions OnNext-->" + ex.Message));

我应该期望命令订阅会调用 OnError 吗?或者我必须使用ThrownExceptions。

最佳答案

通常,您的期望是完全正确的。然而,RegisterAsync*有效拦截OnError .这使得针对 RegisterAsync 进行编程变得更加容易。 ,因为一旦你处理了 OnError曾经,在 Subscribe ,它再也不会工作了。处理 ThrownExceptions意味着您不需要处理重新订阅。

如果这没有意义,请不要担心,只需处理 ThrownExceptions并假设订阅只收到 OnNext

关于reactiveui - 订阅 ReactiveAsyncCommand 不会在抛出异常时调用 OnError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14048705/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com