1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/DKJone-RxSwift-document-translation

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
Error_Handling_Operators.md 4.5 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 26.11.2024 04:47 73ec4a0

Глава 8. Обработка ошибок

Обработка ошибок, возникающих при работе с Observable.

catchErrorJustReturn

Позволяет очереди восстановиться после ошибки и отправить одноэлементную очередь, после чего останавливается исходная очередь.

Подробнее: http://reactivex.io/documentation/operators/catch.html

上一页 - Вернуться к оглавлению

Пример использования catchErrorJustReturn:

example("catchErrorJustReturn") {
    let disposeBag = DisposeBag()

    let sequenceThatFails = PublishSubject<String>()

    sequenceThatFails
        .catchErrorJustReturn("😊")
        .subscribe { print($0) }
        .addDisposableTo(disposeBag)

    sequenceThatFails.onNext("😬")
    sequenceThatFails.onNext("😨")
    sequenceThatFails.onNext("😡")
    sequenceThatFails.onNext("🔴")
    sequenceThatFails.onError(TestError.test)
}

catchError

Восстанавливает работу после возникновения ошибки и переключается на предоставленную очередь восстановления.

Подробнее: http://reactivex.io/documentation/operators/catch.html

Вверх - Вернуться к оглавлению

Пример использования catchError:

example("catchError") {
    let disposeBag = DisposeBag()

    let sequenceThatFails = PublishSubject<String>()
    let recoverySequence = PublishSubject<String>()

    sequenceThatFails
        .catchError {
            print("Error:", $0)
            return recoverySequence
        }
        .subscribe { print($0) }
        .addDisposableTo(disposeBag)

    sequenceThatFails.onNext("😬")
    sequenceThatFails.onNext("😨")
    sequenceThatFails.onNext("😡")
    sequenceThatFails.onNext("🔴")
    sequenceThatFails.onError(TestError.test)

    recoverySequence.onNext("😊")
}

retry

Восстанавливается после ошибки и пытается повторно подписаться на очередь, которая вызвала ошибку.

Подробнее: http://reactivex.io/documentation/operators/retry.html

Наверх - Вернуться к оглавлению

Пример использования retry:

example("retry") {
    let disposeBag = DisposeBag()
    var count = 1

    let sequenceThatErrors = Observable<String>.create { observer in
        observer.onNext("🍎")
        observer.onNext("🍐")
        observer.onNext("🍊")

        if count == 1 {
            observer.onError(TestError.test)
            print("Ошибка обнаружена")
            count += 1
        }

        observer.onNext("🐶")
        observer.onNext("🐱")
        observer.onNext("🐭")
        observer.onCompleted()

        return Disposables.create()
    }

    sequenceThatErrors
        .retry()
        .subscribe(onNext: { print($0) })
        .addDisposableTo(disposeBag)
}

retry(_:)

Восстанавливается после ошибки и пытается повторно подписаться на очередь, вызвавшую ошибку, до тех пор, пока не будет достигнуто максимальное количество попыток.

Подробнее: http://reactivex.io/documentation/operators/retry.html

Вернуться наверх - Вернуться к оглавлению

Пример использования retry(_:):

example("retry maxAttemptCount") {
    let disposeBag = DisposeBag()
    var count = 1

    let sequenceThatErrors = Observable<String>.create { observer in
        observer.onNext("🍎")
        observer.onNext("🍐")
        observer.onNext("🍊")

        if count < 5 {
            observer.onError(TestError.test)
            print("Ошибка обнаружена")
            count += 1
        }

        observer.onNext("🐶")
        observer.onNext("🐱")
        observer.onNext("🐭")
        observer.onCompleted()

        return Disposables.create()
    }

    sequenceThatErrors
        .retry(3)
        .subscribe(onNext: { print($0) })
        .addDisposableTo(disposeBag)
}

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/DKJone-RxSwift-document-translation.git
git@api.gitlife.ru:oschina-mirror/DKJone-RxSwift-document-translation.git
oschina-mirror
DKJone-RxSwift-document-translation
DKJone-RxSwift-document-translation
master