美文网首页ios
错误处理操作

错误处理操作

作者: 你家旭哥 | 来源:发表于2017-08-09 16:44 被阅读9次

帮助从可观察到的错误通知中恢复的操作

catchErrorJustReturn

通过返回一个可观察到的序列,从一个错误事件中恢复,然后发出一个元素,然后终止。

let disposeBag = DisposeBag()

let sequenceThatFails = PublishSubject<String>()

sequenceThatFails
    .catchErrorJustReturn("😊")
    .subscribe { print($0) }
    .disposed(by: disposeBag)

sequenceThatFails.onNext("😬")
sequenceThatFails.onNext("😨")
sequenceThatFails.onNext("😡")
sequenceThatFails.onNext("🔴")
sequenceThatFails.onError(TestError.test)    
//  next(😬)next(😨)next(😡)next(🔴)next(😊)completed

catchError

通过切换到所提供的恢复序列来从错误事件中恢复

let disposeBag = DisposeBag()
    
    let sequenceThatFails = PublishSubject<String>()
    let recoverySequence = PublishSubject<String>()
    
    sequenceThatFails
        .catchError {
            print("Error:", $0)
            return recoverySequence
        }
        .subscribe { print($0) }
        .disposed(by: disposeBag)
    
    sequenceThatFails.onNext("😬")
    sequenceThatFails.onNext("😨")
    sequenceThatFails.onNext("😡")
    sequenceThatFails.onNext("🔴")
    sequenceThatFails.onError(TestError.test)
    
    recoverySequence.onNext("😊")
//next(😬) next(😨) next(😡) next(🔴) Error: test next(😊)

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("Error encountered")
        count += 1
    }
    
    observer.onNext("🐶")
    observer.onNext("🐱")
    observer.onNext("🐭")
    observer.onCompleted()
    
    return Disposables.create()
}

sequenceThatErrors
    .retry()
    .subscribe(onNext: { print($0) })
    .disposed(by: disposeBag)
//🍎🍐🍊Error encountered🍎🍐🍊🐶🐱🐭

retry(_:)

出错重新订阅支持次数

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("Error encountered")
        count += 1
    }
    
    observer.onNext("🐶")
    observer.onNext("🐱")
    observer.onNext("🐭")
    observer.onCompleted()
    
    return Disposables.create()
}

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

Debugging 操作

相关文章

  • Swift - RxSwift的使用详解15(错误处理)

    十五、错误处理操作(Error Handling Operators) 错误处理操作符可以用来帮助我们对 Obse...

  • Combine - Operator(操作符)(二)

    线程 操作符|编码 操作符 |合并 操作符|错误处理 操作符|处理多个订阅者 操作符 线程 操作符 receive...

  • fatal: cannot do a partial commi

    git commit 操作错误处理 问题出现场景:先commit代码, pull 代码的时候, 文件冲突。后续操作...

  • 错误处理操作

    帮助从可观察到的错误通知中恢复的操作 catchErrorJustReturn 通过返回一个可观察到的序列,从一个...

  • RxJava2操作符

    操作符分类 操作符分类有十三种: 变换操作符 过滤操作符列表 组合操作符 错误处理操作符 辅助操作符 条件操作符 ...

  • rxjava2 学习笔记

    特点 链式调用 线程切换 操作符 创建操作符 转换操作符 过滤操作符 组合操作符 错误处理操作符 辅助性操作符 条...

  • RxJava(七)--错误处理操作符

    错误处理操作符 catch、retry 实例与功能介绍 1. catch操作符 代码实例 结果 功能:catch操...

  • mpi4py 中的错误处理

    在上一篇中我们介绍了 mpi4py 中的属性和命名操作,下面将介绍 mpi4py 中的错误处理。 预定义错误处理 ...

  • 快速了解JavaScript的错误处理

    编程语言都会需要完善的错误处理策略使得应用程序更为合理的操作错误。错误处理在服务端的处理较为完善,但是浏览器端进展...

  • 自定义错误set_error_handler(5)

    php的默认错误处理是将消息输出。但是,有时候需要定义一些其他操作,这时就需要自定义错误处理函数。php提供内置函...

网友评论

    本文标题:错误处理操作

    本文链接:https://www.haomeiwen.com/subject/hsrqrxtx.html