[kotlin] 코틀린(Kotlin) 코루틴 핸들러와 예외 처리
코틀린 코루틴을 사용하다 보면 핸들러를 통해 예외 처리를 해야 하는 경우가 있습니다. 코틀린 코루틴은 예외 처리를 위한 몇 가지 유용한 기능을 제공합니다. 이 기능을 잘 활용하면 안정적이고 응답성이 좋은 애플리케이션을 개발할 수 있습니다.
코루틴 핸들러
코루틴 내에서 예외가 발생하면, 해당 예외를 캐치하고 처리하는 핸들러를 정의할 수 있습니다. try { ... } catch { ... }
구문을 사용하여 코루틴 내부에서 발생한 예외를 처리할 수 있습니다.
import kotlinx.coroutines.*
fun main() {
val job = GlobalScope.launch {
try {
// 예외가 발생할 수 있는 코드
} catch (e: Exception) {
// 예외 처리 로직
}
}
job.join()
}
예외 전파
코루틴에서 예외를 발생시키면, 부모 코루틴으로 예외를 전파할 수 있습니다. CoroutineExceptionHandler
를 사용하여 전체 애플리케이션 내에서 예외를 처리하거나, 부모 코루틴에게 예외를 전달할 수 있습니다.
import kotlinx.coroutines.*
val exceptionHandler = CoroutineExceptionHandler { _, exception ->
println("Coroutine Exception: $exception")
}
fun main() {
val job = GlobalScope.launch(exceptionHandler) {
// 예외를 발생시키는 코드
}
job.join()
}
사용자 정의 핸들러
코루틴에서 발생한 예외에 대해 사용자 정의 핸들러를 정의할 수 있습니다. supervisorScope
를 사용하여 하위 코루틴의 예외에 대해 별도의 핸들러를 지정할 수 있습니다.
import kotlinx.coroutines.*
fun main() {
runBlocking {
supervisorScope {
val job = launch {
throw ArithmeticException() // 하위 코루틴에서 예외 발생
}
job.join()
}
}
}
코틀린 코루틴은 풍부한 예외 처리 기능을 제공하여 안정적인 애플리케이션을 개발하는 데 도움이 됩니다.