C# 我如何多路传输捕捉以使其不';我不能终止我的观察?

C# 我如何多路传输捕捉以使其不';我不能终止我的观察?,c#,system.reactive,C#,System.reactive,鉴于: 使用系统; 使用System.Reactive.Linq; 使用系统。无功; 使用系统线程; 公共课程 { 公共静态void Main() { 可观察 .范围(0,3) .选择((迭代)=> { 尝试 { 如果(迭代==2) { 抛出新异常(); } 返回“成功!”; } 捕获(例外情况除外) { 控制台。WriteLine(“捕获!”); 返回“异常!”; } }) .Do((消息)=> { Console.WriteLine(“在:+消息之后”); }) .RunAsync(新的Ca

鉴于:

使用系统;
使用System.Reactive.Linq;
使用系统。无功;
使用系统线程;
公共课程
{
公共静态void Main()
{
可观察
.范围(0,3)
.选择((迭代)=>
{
尝试
{
如果(迭代==2)
{
抛出新异常();
}
返回“成功!”;
}
捕获(例外情况除外)
{
控制台。WriteLine(“捕获!”);
返回“异常!”;
}
})
.Do((消息)=>
{
Console.WriteLine(“在:+消息之后”);
})
.RunAsync(新的CancellationToken())
.Wait();
}
}

是否有任何方法可以调整以上内容以利用
Catch
操作符,从而使第二次迭代不会导致整个链失败?可能使用
SelectMany
Select
Merge

是否确定失败?AFAICS观测成功完成。是的,我知道这是可行的。我的问题是,这是否适用于使用Catch运算符。
Catch
运算符对故障序列进行操作。它连接失败序列之后的第二个序列。因此,为了使用该运算符,必须允许序列失败,然后继续使用一个新序列,该序列包含第一个序列未发出的所有元素。事情会变得一团糟。我认为在这种情况下,
Catch
不会给你带来任何好处。亚历山大,对此我很抱歉。我只是想搞笑。请忽略我之前的评论。@Enigmativity OP可能在其实际应用程序中使用了真实(可取消)
CancellationToken
作为取消序列的机制。