С определенным набором исключений легко обращаться с помощью оператора Catch
. Как мы можем игнорировать определенные исключения, но обрабатывать остальные в блоке Catch
?
Скажем, например, я хотел бы, чтобы исключения ArgumentNullException
, ArgumentOutOfRangeException
и TimeoutException
всплыли и сообщали об ошибке, но для что-нибудь еще, что я хотел бы повторить.
Версия catch ниже будет перехватывать все исключения, и нет способа выборочно игнорировать некоторые типы, поскольку подпись требует, чтобы она возвращала IObservable<T>
source.Catch<T, Exception>(e=> Observable.Return(default(T)))
Если мне придется повторить попытку определенного исключения, я мог бы написать что-то вроде (я думаю)
source.Catch<T, WebException>(e=> source.Retry())