У меня настроен IObservable, и я пытаюсь переключить его с перехода с «холодного» на «горячий». Однако, по чистой глупости, я обнаружил, что где-то в IObservable необработанное исключение - бросок.
Я сразу испугался, потому что Reactive Extensions не дали мне знать об этом необработанном исключении. Я думаю, что поток только что закончился. Теперь я обеспокоен тем, что Rx Extensions будет поглощать другие исключения.
Это код, который я сейчас использую, чтобы активировать IObservable, чтобы он был «горячим». Я ожидал бы, что любые необработанные исключения, которые происходят внутри IObservable, будут всплывать и появляться здесь. Но это не так.
var observable = Observable.Create<>(async a =>
{
...
a.OnNext();
...
a.OnCompleted();
});
observable = observable.Do(onNext: ...,
onCompleted: async () =>
{
// This throws the unhandled exception
await MethodThatThrowsExceptionAsync();
});
// I would expect any exceptions inside the IObservable to bubble up and be rethrown here.
await observable.LastOrDefaultAsync();
Я что-то не так делаю? Это ожидаемое поведение? Это кажется чрезвычайно подверженным ошибкам, если это так.