[Kotlin Coroutine] runCatching으로 CancellationException을 안전하게 처리해보자
·
Kotlin
안녕하세요! 안드로이드 Compose 앱을 개발하면서 예외 처리에 대해 고민할 일이 종종 생기곤 하는데요. 특히 suspend 환경에서의 예외 처리라면 더욱 주의해야 하는 것 같아요.Sopt Makers에서 합류한 지도 벌써 4개월이 지났는데요, 그 과정에서 다시 관심을 갖게 된 주제가 있어요. 바로 RunCatching 인데요! 그리고 이에 관련된 이슈는 과거에도 굉장히 활발히 논의됐었어요.Provide a runCatching that does not handle a CancellationException but re-throws it instead. #1814이걸 계기로 기존에 구현된 코드들을 살펴보다가 suspendRunCatching을 어떻게 개선하면 좋을까? 라는 고민이 생겨서, 파헤쳐 본 내..
[Kotline Coroutine] OnFailure에 로그적기 귀찮아
·
Kotlin
안녕하세요! 오늘은 Result를 사용할 때 실패 시마다 반복해서 적던 로그 코드를 줄이기 위해 만든 확장 함수를 소개하려고 합니다. 사실 정말 간단해요ㅎㅎ1. 왜 만들었어요?제가 참여중인 Spoony에서는 런캐칭으로 감싸 뷰모델에서 onSuccess와 onFailure로 결과값을 처리하고 있었어요. 그러나 작업자마다 로그를 찍는 게 일관적이지 않았고 매번 실패 시에 Timber.e(e)를 적는 게 귀찮게 다가왔어요. 사용되는 부분이 많다 보니 매번 팀버 코드를 작성해야 했고 확장함수로 만드면 어떻냐는 팀원의 아이디어가 나왔어요.그래서 바로 작업에 들어갔습니다.2. Result 실패 처리 반복현재 ViewModel에서 다음과 같이 runCatching과 Result를 조합해 API 호출의 성공/실패를..