繁体   English   中英

.NET 反应式框架:ReplaySubject OnError:为什么会抛出异常?

[英].NET Reactive framework: ReplaySubject OnError: Why does it throw the exception?

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

我一直在使用 RX 的 ReplaySubject class。 我以异常作为参数调用 OnError。

我期待它会通知所有 OnError 订阅者并将异常传递给他们,而不是它只是抛出异常,然后异常只是 go 未处理。

代码很简单,可以看一下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);
        }
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM