如何解决.NET Reactive框架:ReplaySubject OnError:为什么会引发异常?
| 注意:我指的是.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);
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。