[RxSwift]-エラー管理(Catch,Retry)
RxSWIFTがエラーを管理する方法は次のとおりです. Catch Retry あります.
1. Catch
:エラーをデフォルト値(DefaultValue)に戻します.
onError通知でシーケンスを復元します(エラーなし).
Catch演算子は、ソース観測可能測定がonError通知を発行したときに使用されます.
観察者に転送するのではなく、観察結果が正常に終了または終了することを保証するために、別のitemdlsk sequence itemとして切り取ります.エラーが発生し、タイプがerror 1の場合、catchはエラーを受信し、justを使用して観察可能な<「error 1」>を返します. //運転時出力:
error1
+ CatchAndReturn要素:エラーが発生した場合、シーケンスの最後の が観察されます.である場合にかかわらず、errorはnextイベントとして返されます. //運転時出力:
next(error)
completed
購読前にcatch AndReturnが行われていない場合
Unhandled error happened: error1
出力結果は以下の通りです.
2. Retry
:制限付きまたは無限の再試行.
ソース観測量にエラーが発生した場合は、エラーなく完了(終了)するように再購読します.
onError通知が表示されると、Retry演算子は、観察者に転送するのではなく、エラーなしでシーケンスを終了するために、ソースの観測可能な値を再購読し、再び機会を提供します.
シーケンスはエラーによって終了しますが、Retryは観察者にonNextを送信し、重複データの解放を招く可能性があります.
再試行()演算子を使用して、再試行を続行します. したがって、再試行回数を制限するには、次のようにします.
再試行(1000)だったので、1000回再試行しましたが、 ソース観測値はエラーを伝達し続けます.
Unhandled error happened: error1
出力します.
1. Catch
:エラーをデフォルト値(DefaultValue)に戻します.
onError通知でシーケンスを復元します(エラーなし).
Catch演算子は、ソース観測可能測定がonError通知を発行したときに使用されます.
観察者に転送するのではなく、観察結果が正常に終了または終了することを保証するために、別のitemdlsk sequence itemとして切り取ります.
public func `catch`(_ handler: @escaping (Error) throws -> RxSwift.Observable<Self.Element>) -> RxSwift.Observable<Self.Element>
enum MyError: Error {
case error1
case error2
}
Observable.create {
$0.onError(MyError.error1)
return Disposables.create()
}
.catch { error in
switch error as! MyError {
case .error1:
return .just("error1")
case .error2:
return .just("error2")
}
}
.subscribe {
print($0)
}
.disposed(by: disposeBag)
error1
+ CatchAndReturn
public func catchAndReturn(_ element: Self.Element) -> RxSwift.Observable<Self.Element>
enum MyError: Error {
case error1
case error2
}
Observable.create {
$0.onError(MyError.error1)
return Disposables.create()
}
.catchAndReturn("error")
.subscribe {
print($0)
}
.disposed(by: disposeBag)
エラータイプがnext(error)
completed
購読前にcatch AndReturnが行われていない場合
Unhandled error happened: error1
出力結果は以下の通りです.
2. Retry
:制限付きまたは無限の再試行.
ソース観測量にエラーが発生した場合は、エラーなく完了(終了)するように再購読します.
onError通知が表示されると、Retry演算子は、観察者に転送するのではなく、エラーなしでシーケンスを終了するために、ソースの観測可能な値を再購読し、再び機会を提供します.
シーケンスはエラーによって終了しますが、Retryは観察者にonNextを送信し、重複データの解放を招く可能性があります.
public func retry() -> RxSwift.Observable<Self.Element>
再試行()演算子
Unhandled error happened: error1
出力します.
Reference
この問題について([RxSwift]-エラー管理(Catch,Retry)), 我々は、より多くの情報をここで見つけました https://velog.io/@sun02/RxSwift-Error관리テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol