Kotlin/Coroutines 2

[Kotlin] 코루틴의 취소와 예외 처리 파고들기

코루틴을 막 학습한 사람에게 코루틴은 매우 간단하고 자바스크립트의 async, await와 비슷하게 보이기도 해서 비동기 프로그래밍을 위한 아주 쉽고 훌륭한 도구로 보일 수 있습니다. 실제로 쉽고 훌륭한 도구이긴 하지만요. 하지만 코루틴을 더 깊게 살펴보면 실제로 걸리기 쉬운 함정들이 많이 존재합니다. 예외 처리나 취소를 try-catch 블록을 통해 간단히 할 수 있으리라 생각하지만 실제로는 복잡한 매커니즘으로 동작하고 있기에 많은 것들이 잘못될 수도 있습니다. 본문에서는 유튜브의 In-Depth Guide to Coroutine Cancellation & Exception Handling 영상을 바탕으로 다음의 내용을 다룹니다. 코루틴에서 어떻게 예외를 잡고 처리해야 하는지 코루틴에서 예외 처리가 일..

Kotlin/Coroutines 2022.07.15

[Kotlin] suspend 함수의 실행 원리: 콜백에서 코루틴으로

Coroutines: Replace callbacks & Main safety 코루틴은 콜백 스타일의 코드를 순차적 프로그래밍으로 변경해주고 안드로이드에서 우리의 코드를 main safe하게 만들어준다. main safe하다는 것은 예시로 네트워크 요청을 만드는 코루틴 기반의 함수를 작성할 수 있게 해주고, 그냥 메인 스레드에서 호출해도 아무런 문제가 없다는 것을 뜻한다. 어떻게 코루틴이 이것을 가능하게 해주는지 네트워크 요청을 생성하기 위한 예제 코드를 통해 알아보자. Blocking 스타일 코드 메인 스레드에서 result를 networkRequest()부터 직접 리턴받는 블로킹(blocking) 스타일로 작성한 코드를 보자. 위의 코드에서 networkRequest()는 메인 스레드를 블로킹할 것이..

Kotlin/Coroutines 2022.07.03