728x90
Rxjava 에서는 에러 발생시 onError 이벤트가 발생하기 때문에 기존 사용하던 try-catch 문을 사용할 수 없다.
하지만 onError 이벤트는 흐름이 중단된다는 문제점이 있다. 이때 소비자가 모든 예외를 미리 알고 처리하기는 힘드므로 생산자 쪽에서 에러를 캐치해서 사전에 예외처리를 해둘 수 있는 3가지 Operator 를 정리해보려고 한다.
*Rxjava 에서는 에러도 어떠한 데이터로 본다.
onErrorReturn()
에러 발생 시점에 특정 값으로 대체
+ 선언적으로 예외 발생 처리 가능
.onErrorReturn { it:Throwable
when (it) {
is java.lang.NullPointerException -> {
it.printStackTrace()
}
}
}
onErrorReturnItem()
에러 발생 시점에 특정 값으로 대체
onErrorReturn() 과 동일하지만 throwable 객체를 인자로 받아오지 않음
+ 코드의 가독성
- 예외의 종류를 확인할 수 없음
onErrorResumeNext()
에러 발생 시점에 대체할 스트림 (Observable 등) 으로 대체 -> 대체할 데이터가 고정되어 있지 않을 때 사용
이 operator 와 비교해서 onErrorReturn() 과 onErrorReturnItem() 은 기본 값 반환 후 더이상 emit 하지 않는다는 것을 알 수 있다.
+ 에러 처리 외에도 필요한 추가 작업 가능
+ onErrorReturn() 처럼 throwable 받아오기 가능
'Kotlin > 안드로이드 공부' 카테고리의 다른 글
Spans - 문자열 중 숫자에만 텍스트 효과 적용하기 (0) | 2021.10.21 |
---|---|
Rxjava Single 안의 값 사용하기 (0) | 2021.10.19 |
RecyclerView 안에 EditText (0) | 2021.07.05 |
Native Development Kit (NDK) (0) | 2021.02.26 |
RecyclerView 뽀개기 (0) | 2021.01.24 |