.NET 响应式框架:重播主题错误:为什么它会引发异常



注意:我指的是 .NET 4 版本的 RX。

我一直在使用RX的ReplaySubject类。我正在调用 OnError 并带有异常作为参数。

我期望它会通知所有 OnError 订阅者并将异常传递给他们,相反,它只是抛出异常,然后异常就无法处理。

代码

很简单,你可以在 GitHub 上查看代码。https://github.com/arielbh/CodeCommander/blob/master/CodeValue.CodeCommander/CommandBase.cs第 117 行是 OnNext 呼叫。

有什么想法吗?显然,我希望我期望的行为发生。谢谢

爱丽儿

好的,我找到了原因。如果您未订阅 OnError,则默认行为将引发异常。我不够小心,所以没有观察到引发错误的主体。

更多信息:http://social.msdn.microsoft.com/Forums/en/rx/thread/3125094b-1ab2-4d01-8f44-fb68ef913f43

我也遇到了这种奇怪的行为。我创建了自己的扩展方法来获得我期望的行为。

    public static void SendOnError<T, E>(this IObserver<T> Subject, E ExceptionToSend) where E : Exception
    {
        try { Subject?.OnError(ExceptionToSend); }
        catch (E exception)
        {
            Debug.WriteLine("One or more subscribers to the subject did not implement an OnError handler. Ignoring rethrown exception: " + exception.Message);
        }
    }

相关内容

  • 没有找到相关文章

最新更新