Rx 中的 ArgumentException.应该扔在哪里

本文关键字:在哪里 中的 ArgumentException Rx | 更新日期: 2023-09-27 18:31:08

我不知道什么时候应该在创建IObservable时抛出ArgumentException。我应该把它扔在 Create 方法之前还是在 Create 方法中?

这:

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

与:

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

Rx 中的 ArgumentException.应该扔在哪里

我建议你快速失败,因此在我看来你的第一个选择是正确的。如果要使用第二个选项,则使用者只有在订阅序列时才会收到异常,这可能是一段时间后。这将使维护IMO的代码库变得更加困难。