我正在尝试使用此代码段:
LinkCurrentMailToCase = ReactiveCommand.CreateFromObservable(() => MyAPI.AddMailToCase(CurrentMailItem, CurrentCase));
LinkCurrentMailToCase .ThrownExceptions.Select(ex => ex.Message).ToProperty(this, vm => vm.ErrorMessage, out errorMessage);
然后我将一个按钮绑定到LinkCurrentMailToCase。这可以正常工作,直到抛出异常,在这种情况下我的LinkCurrentMailToCase不再被调用。
从我在不同帖子中读到的内容来看,这是Observable的正常行为,但如果在保持Observable活着的同时抛出异常,我无法弄清楚如何设置我的ErrorMessage。
答案 0 :(得分:0)
您的代码段中的命令在失败后仍然可以再次调用,因此没有必要使用Catch
。但是如果您订阅了命令本身并且它失败了它将在OnError
回调中结束(如果你有的话),除了通过ThrownExceptions
。
这一切都取决于你如何调用命令,如果你使用BindCommand
或使用来自另一个observable的InvokeCommand
管道命令它应该按照描述工作。
但是如果你使用<Command>.Execute().Subscribe()
并且你没有注册OnError
处理程序(或者例如使用Catch
),命令中的可观察管道将会中断。