RxJava 예외 처리 기본적으로 Observer의 onError 함수를 통해서 에러를 처리할 수 있습니다. onError로 에러를 처리하는 경우 스트림은 데이터 발행을 중단하며 Observer는 onComplete 호출을 하지 못합니다. fun onError() { Observable.create { emitter -> emitter.onNext("Message 1") emitter.onNext("Message 2") throw Exception("Something Wrong") }.subscribe({ println(it) }, { println("Error : $it") }) } Message 1 Message 2 Error : java.lang.Exception: Something Wrong Rx..
Supervision Coroutine에서 Exception이 발생한 경우 Exception이 전파되면서 다른 자식들의 Coroutine을 취소시키고, 부모까지 취소시킨다. 하지만 여러 Coroutine에서 API를 호출하여 UI를 업데이트 하는 작업을 생각해보자. 하나의 API가 실패한 경우 모든 Coroutine이 취소되면서 다른 작업까지 영향을 미친다. 이러한 문제점을 해결하기 위한 방법이 Supervision이다. SupervisionJob 일반적인 Job과 비슷하지만 Exception이 아래 방향으로만 전달된다. 즉 Exception이 발생했을 때 다른 자식들이나 부모의 Coroutine을 취소하지 않고 자신과 자신의 자식들의 Coroutine만 취소한다. SupervisionJob은 매개변수로..
cancen() & cancelAndJoin() Coroutine에서 취소가 어떻게 진행되는지 확인해봅니다. // cancel과 cancelAndJoin의 차이 public suspend fun Job.cancelAndJoin() { cancel() return join() } cancel()을 실행했을 때 취소되지 않고 Coroutine이 계속 실행됩니다. 즉 Coroutine 내부에서 진행될 때 취소를 확인하여 종료할 수 있도록 설계 해야합니다. (개발자가 직접 취소 지점을 정할 수 있습니다.) val job = CoroutineScope(Dispatchers.IO).launch { for (i in 0 until 5) { Log.d("PASS", "Running") Thread.sleep(1000L..
- Total
- Today
- Yesterday
- 연산자
- observable
- DART
- 코루틴
- ConcatAdapter.Config
- gradle
- commit
- ConcatAdapter
- ViewModelStoreOwner
- Kotlin
- clean code
- Flutter
- Widget
- Flowable
- git
- ViewModelProvider
- viewmodel
- Coroutine
- isActive
- TDD
- DSL
- 클린코드
- rxjava
- Exception
- CancellationException
- Android
- 클린 코드
- null
- 보이스카우트 규칙
- 함수
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
