반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- typeorm
- operator
- subject
- RFC1738/1808
- SWIFT
- ios14
- nonisolated
- SwiftUI
- RxCocoa
- Xcode
- RxSwift
- @EnvironmentObject
- nestjs
- Creating Operators
- NullObject
- init
- NavigationLink
- @Environment
- vim
- Operater
- init?
- dismiss
- @State
- URL(string:)
- Operators
- IOS
- @Binding
- Bug
- swift6
- graphql
Archives
- Today
- Total
Tunko Development Diary
RxSwift) Error Handling (catch, catchAndReturn) 본문
catch, catchAndReturn
두 연산자 catch와 catchAndReturn 은 옵버버블에서 에러가 발생했을때에 대한 처리입니다.
catch는 Error가 발생하면 새로운 옵저버블을 리턴해줍니다.
catchAndReturn은 Error가 발생하면 특정 값을 Next이벤트로 전달합니다.
let disposeBag = DisposeBag()
enum TunkoError: Error {
case error
}
let subject = PublishSubject<Int>()
let errorSubject = PublishSubject<Int>()
subject
.catch { _ in errorSubject }
.subscribe { print($0) }
.disposed(by: disposeBag)
subject.onNext(1)
subject.onError(TunkoError.error)
subject.onNext(2)
errorSubject.onNext(11)
errorSubject.onNext(22)
errorSubject.onCompleted()
출력
next(1)
next(11)
next(22)
completed
subject 에서 1 next 이벤트까지만 방출된후 Error가 발생했고 그 이후 이벤트는 무시되었습니다. 하지만 catch 에러 return 한 errorSubject 에서 이어서 next 이벤트가 방출된것을 확인할 수 있습니다.
그럼 catchAndReturn 로 변경해보겠습니다.
subject
.catchAndReturn(999)
.subscribe { print($0) }
.disposed(by: disposeBag)
subject.onNext(1)
subject.onError(TunkoError.error)
subject.onNext(2)
errorSubject.onNext(11)
errorSubject.onNext(22)
errorSubject.onCompleted()
출력
next(1)
next(999)
completed
반응형
'Development > RxSwift' 카테고리의 다른 글
RxSwift) RxCocoa 란? (0) | 2022.06.12 |
---|---|
RxSwift) Error Handling (retry, retry(when:)) (0) | 2022.06.10 |
RxSwift) Scheduler (0) | 2022.06.09 |
RxSwift) sharing Subscription Operator (share) (0) | 2022.06.08 |
RxSwift) sharing Subscription Operator (refCount) (0) | 2022.06.08 |
Comments