Kotlin flow의 예외 처리(catch), 재시도(retry, retryWhen) 살펴보기
kotlin coroutines을 활용한 exception은 매우 쉽다.
fun some() {
viewModelScope.launch {
try {
// call suspend function
} catch(e: Exception) {}
}
}
launch
안에 try/catch
묶어야 함이 중요하다. coroutines의 장점 역시 우리가 항상 사용하는 함수만 이해하면 코루틴을 활용할 수 있다는 점이다.
그렇다면 Flow에서의 예외 처리는 어떻게 할 수 있을까?
가장 기본적으론 아래와 같이 할 수 있다.
fun some() {
viewModelScope.launch {
try {
flowXXX
.collect {}
} catch(e: Exception) {}
}
}
flow 같진 않지만 flow로 동작하니 일단 넘어가자.
이 글에서 알아볼 내용
- flow를 활용한 exception 처리
- catch 활용
- retry, retryWhen 활용