Sobes.tech
Junior — Middle

Jak je zajištěno zpracování chyb v rámci CoroutineScope v Kotlinu?

sobes.tech AI

Odpověď od AI

Zpracování chyb v CoroutineScope v Kotlinu se provádí pomocí mechanismů výjimek a speciálních zpracovatelů chyb.

Hlavní způsoby:

  1. try-catch uvnitř korutiny Kód korutiny lze obalit do bloku try-catch pro lokální zpracování výjimek.
launch {
    try {
        // kód, který může vyvolat výjimku
    } catch (e: Exception) {
        // zpracování chyby
    }
}
  1. CoroutineExceptionHandler Jedná se o speciálního zpracovatele, kterého lze předat do kontextu korutiny pro globální zpracování nedořešených výjimek v korutinách spuštěných přes launch (ale ne async).
val handler = CoroutineExceptionHandler { _, exception ->
    println("Chyceno $exception")
}

val scope = CoroutineScope(Dispatchers.Main + handler)
scope.launch {
    throw RuntimeException("Chyba")
}
  1. Zpracování chyb v async V případě async se výjimky nevyhazují ihned, ale při volání await(), takže zpracování chyb by mělo být tam.
val deferred = async {
    throw RuntimeException("Chyba")
}
try {
    deferred.await()
} catch (e: Exception) {
    // zpracování
}

Volba metody závisí na typu korutiny a požadované úrovni zpracování chyb.