코루틴 Exception
Coroutines Flow 6편 - Flow 예외 처리, Flow의 예외 투명성
Flow 예외 처리 Flow 수집은 방출하는 곳 혹은 연산자 안의 코드가 예외를 발생시키는 경우 예외와 함께 완료될 수 있다. 예외들을 처리할 수 있는 몇가지 방법이 있다. 수집기에서의 try와 catch 수집기는 예외를 처리하기 위해 Kotlin의 try/catch 블록을 사용할 수 있다 : fun simple(): Flow = flow { for (i in 1..3) { println("Emitting $i") emit(i) // emit next value } } fun main() = runBlocking { try { simple().collect { value -> println(value) check(value check(value println(value) } } catch (e: Th..
Coroutines 실행 시간 제한하기 - Timeout, 비동기 Timeout과 리소스
Timeout Coroutine의 실행을 취소하는 가장 명백하고 실용적인 이유는 실행 시간이 Timeout으로 설정한 시간을 넘어섰기 때문이다. 해당 Job에 대한 참조를 만들고 새로운 별도의 Coroutine을 실행해서 일정 시간 이후에 참조된 Job을 취소하는 과정을 거칠 수 있지만, 이러한 동작을 수행하는 withTimeout가 이미 만들어져 있다. 다음 예를 보자. import kotlinx.coroutines.* fun main() = runBlocking { withTimeout(1300L) { repeat(1000) { i -> println("I'm sleeping $i ...") delay(500L) } } } 📌 전체 코드는 이곳에서 확인할 수 있습니다. 위 코드는 다음을 출력한다. I..