【问题标题】:ReactriveX: Catching exceptions on Observable<bool> as lambda expressionReactriveX:将 Observable<bool> 上的异常捕获为 lambda 表达式
【发布时间】:2017-11-09 21:51:13
【问题描述】:

我有这个可观察的:

public class NetworkToolEngine
{
    public NetworkToolEngine()
    {            
        this.connectionAvailable = Observable
            .Interval(TimeSpan.FromSeconds(5))
            .Select(_ => true);
    }
}

static class Program
{
    static void Main()
    {
        NetWorkToolEngine networkToolEngine = new NetworkToolEngine();
        this.networkToolEngine.ConnectionAvailable
            .Do(_ => this.ConnectionAvailable())
            .Catch(ex =>    //<<<<<1>>>>>
            {
                this.ConnectionUnavailable();
                return Observable.Empty<bool>();
            });
    }

目前;我在&lt;&lt;&lt;&lt;&lt;1&gt;&gt;&gt;&gt;&gt; 收到此编译错误:

无法将 lambda 表达式转换为类型“IObservable”,因为它不是委托类型

有什么想法吗?

【问题讨论】:

  • 这段代码显然不是你的实际代码——它没有编译的希望。能否请您发布有效代码?

标签: c# system.reactive


【解决方案1】:

那是因为 catch 有多个重载并且没有你指定 ex 的类型 - 它选择了错误的一个。你需要这样做:

.Catch((Exception ex) =>    //<<<<<1>>>>>
{
    this.ConnectionUnavailable();
    return Observable.Empty<bool>();
});

【讨论】:

  • 你救了我的命 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-20
  • 1970-01-01
  • 2016-03-10
  • 2014-10-19
相关资源
最近更新 更多