Sobes.tech
Junior — Middle

Jak implementovat zpracování výjimek v asynchronních korutinách?

sobes.tech AI

Odpověď od AI

V Kotlinu lze při práci s korutinami pro zpracování výjimek používat bloky try-catch uvnitř samotné korutiny nebo aplikovat speciální konstrukce, jako je CoroutineExceptionHandler.

Příklad s try-catch uvnitř korutiny:

launch {
    try {
        val result = someSuspendFunction()
        println(result)
    } catch (e: Exception) {
        println("Chyba: ${e.message}")
    }
}

Pokud je korutina spuštěna přes launch, předané neřešené výjimky jsou předány CoroutineExceptionHandler:

val handler = CoroutineExceptionHandler { _, exception ->
    println("Zpracovaná výjimka: ${exception.message}")
}

GlobalScope.launch(handler) {
    throw RuntimeException("Chyba v korutině")
}

Tímto způsobem lze efektivně spravovat chyby v asynchronním kódu.