Sobes.tech
Junior — Middle

Jak zaimplementować obsługę wyjątków w asynchronicznych korutynach?

sobes.tech AI

Odpowiedź od AI

W Kotlinie, do obsługi wyjątków w korutynach można używać bloków try-catch wewnątrz samej korutyny lub stosować specjalne konstrukcje, takie jak CoroutineExceptionHandler.

Przykład z try-catch wewnątrz korutyny:

launch {
    try {
        val result = someSuspendFunction()
        println(result)
    } catch (e: Exception) {
        println("Błąd: ${e.message}")
    }
}

Jeśli korutyna jest uruchamiana przez launch, nieobsłużone wyjątki są przekazywane do CoroutineExceptionHandler:

val handler = CoroutineExceptionHandler { _, exception ->
    println("Obsłużony wyjątek: ${exception.message}")
}

GlobalScope.launch(handler) {
    throw RuntimeException("Błąd w korutynie")
}

W ten sposób można elastycznie zarządzać błędami w kodzie asynchronicznym.