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:
- 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
}
}
- 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")
}
- 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.