Rx中的ArgumentException。哪里应该扔?

时间:2013-09-13 13:40:39

标签: c# system.reactive

我不知道何时应该在创建IObservable时抛出ArgumentException。我应该在Create方法之前还是在?

之内抛出它

此:

IObservable<object> CreateObservable(int i)
{
    if (i < 0)
        throw new ArgumentException();

    return Observable.Create(o => { ... });
}

Vs的:

IObservable<object> CreateObservable(int i)
{
    return Observable.Create(o =>
    {
        if (i < 0)
            o.OnError(new ArgumentException());

        ...
    });
}

1 个答案:

答案 0 :(得分:2)

我建议你fail fast,因此我认为你的第一个选择是正确的。 如果您要使用第二个选项,则消费者只有在订阅序列时才会获得异常,这可能需要一段时间。这将使维护IMO的代码库变得更加困难。