У меня есть поведение испытуемомуКак обрабатывать исключения на предмет поведения
var source = new BehaviorSubject<int>(0);
Я тогда процесс этот источник с чем-то вроде
var withErrors = source
.Select(v =>
{
if (v == 2)
{
throw new Exception("Ouch ");
}
return v;
})
Я хочу подписаться на withErrors таким образом, что я может пропустить ошибки . Попытка поймать вот так.
public IObservabe<int> SkipError(IObservable<T> source){
return source
.Catch(e=>SkipErrors(source.Skip(1));
}
, а затем вызвать его, таким образом,
var withoutErrors = SkipError(withErrors);
Пропускать попытка избежать повторения последней ошибки на предмет поведения, но увы это не работает таким образом. Пропуск не пропускает ошибки, а только поверх действительных данных, поэтому ошибка из текущего состояния объекта поведения продолжается.
Есть ли умный способ пропустить Skip, который также пропустит ошибки. Что-то подсказывает мне, что это невозможно, но, надеюсь, я ошибаюсь
На самом деле я пришел к выводу, что это невозможно. Поскольку согласно спецификации RX Observable не может продолжаться после вызова OnError, вы ничего не можете сделать, чтобы получить следующее значение после вызова OnError. Мне нужно будет вставить некоторую логику туда, где до возникновения ошибки. – bradgonesurfing
Исправить. Ваш вопрос находится в прямом противоречии с спецификацией Rx. Обратите внимание, что это не BehaviorSubject, а ошибки, но проекция (оператор Select), а не то, что очень важно. –
Я понял, что если я хочу распространять такие ошибки, мне нужно IObservable <Исключительно>, где Исключительный определяется как https://gist.github.com/bradphelan/6154972 и по существу является контейнером, который может содержать либо Исключение или значение –
bradgonesurfing