HomePostsSearch
KeyFlow LogoKEYLOW
BETAv2026.03.14

Kotlin flow의 예외 처리(catch), 재시도(retry, retryWhen) 살펴보기

Taehwan kwon (theo)Taehwan kwon (theo)
about 1 month ago(Edited)
6 min read

StateFlow나 SharedFlow가 예외 발생 시 영구적으로 멈추는 문제를 방지하고, 지속 가능한 데이터 스트림을 설계하는 실전 비법을 확인하세요.

·catch는 예외를 처리하지만 스트림을 종료시키는 반면, retry/retryWhen은 조건을 만족할 때 스트림을 재생성하여 지속성을 확보한다.
·MutableStateFlow는 마지막 값을 Replay하는 특성 때문에 retryWhen 사용 시 무한 루프에 빠질 수 있으므로, 필터링이나 값 초기화와 같은 방어 코드가 필수적이다.
·flatMapLatest 등 연산자가 중첩된 구조에서는 예외 처리 로직을 중앙 집중화하여 복잡도를 낮추고 의도치 않은 중복 실행을 방지해야 한다.
SeriesPart 11 of 14

Kotlin Coroutines

View All
Previous
Callback으로 전달받은 데이터를 Coroutines의 Channel로 처리해보자.
Next
Android에서 flow를 통한 실시간 데이터 갱신에 대한 정리

On this page

  • 이 글에서 알아볼 내용
  • 먼저 launchIn을 살펴보자
  • Catch 처리는?
  • 지속 가능한 스트림 활용 - StateFlow, SharedFlow
  • retry와 retryWhen
  • retryWhen을 활용하자.
  • retryWhen을 활용하는 이유?
  • retryWhen의 위치가 중요하다.
  • Case 1 - MutableStateFlow에서 활용되는 경우
  • case 2 MutableSharedFlow는?
  • case 3 flatMap을 활용했다면 retry 위치는?
  • 마무리
Taehwan kwon (theo)

Taehwan kwon (theo)

@taehwandev

[안녕하세요, 태환입니다] 글쓰기 플랫폼 KeyFlow의 운영과 개발을 총괄하고 있는 태환입니다. 사용자가 생각에 집중할 수 있는 환경을 만들기 위해 플랫폼인 키플로우 전체의 기획부터 배포, 관리를 리딩하고 있습니다.

[경험 및 전문성]

  • KeyFlow Management: 서비스의 전반적인 운영을 책임지고 있습니다.
  • Mobile Engineering: 안드로이드와 iOS 플랫폼 모두에서 안정적이고 매끄러운 사용자 경험을 구현합니다. 기기의 특성에 최적화된 에디터와 기능을 개발하는 데 강점이 있습니다.
  • Openness & Stability: 플랫폼의 개방성을 확대하면서도, 시스템의 안정성을 놓치지 않는 균형 잡힌 개발 철학을 추구합니다.

[목표] 단순한 기능 구현을 넘어, 전 세계 사용자가 언어의 장벽 없이 소통할 수 있는 글로벌 플랫폼으로 KeyFlow를 성장시키는 것이 저의 목표입니다.

기술 스택 요약 (Tech Summary)

  • Mobile: Android (Kotlin/Java), iOS (Swift)
  • Highlight: GitHub Gist Integration, AI Language Detection, Cross-platform Optimization
kotlin
1
2
3
4
5
data class User(
  val name: String = "taehwan",
  val bio: String = "Android, iOS",
  val nickName: String = "Theo",
)
Next: Android에서 flow를 통한 실시간 데이터 갱신에 대한 정리
Was this helpful?Your support means a lot to the author.
Home
Posts
Inbox