Sobes.tech
Junior — Middle

Hogyan történik a hibakezelés a CoroutineScope keretében Kotlinben?

sobes.tech MI

Válasz az MI-től

A Kotlinban a CoroutineScope hibakezelése kivételmechanizmusok és speciális hibakezelők segítségével történik.

Fő módszerek:

  1. try-catch a coroutine belsejében A coroutine kódját try-catch blokkba lehet helyezni, hogy helyi szinten kezeljük a kivételeket.
launch {
    try {
        // kód, ami kivételt dobhat
    } catch (e: Exception) {
        // hibakezelés
    }
}
  1. CoroutineExceptionHandler Ez egy speciális kezelő, amit a coroutine kontextusába lehet helyezni, hogy globálisan kezelje a launch által indított (de nem async) coroutine-okban kezeletlen kivételeket.
val handler = CoroutineExceptionHandler { _, exception ->
    println("Elkapva $exception")
}

val scope = CoroutineScope(Dispatchers.Main + handler)
scope.launch {
    throw RuntimeException("Hiba")
}
  1. Hibakezelés az async-ben Az async esetén a kivételek nem azonnal dobódnak, hanem a await() hívásakor, így ott kell kezelni őket.
val deferred = async {
    throw RuntimeException("Hiba")
}
try {
    deferred.await()
} catch (e: Exception) {
    // kezelés
}

Így a módszer kiválasztása a coroutine típusától és a kívánt hibakezelési szinttől függ.