Junior — Middle
Jak je ve vašich zkušenostech zajišťována práce s výjimkami uvnitř korutin?
sobes.tech AI
Odpověď od AI
Zpracování výjimek v coroutinech na Androidu se obvykle provádí pomocí bloků try-catch uvnitř samotné coroutine nebo pomocí speciálních mechanismů, jako je CoroutineExceptionHandler.
Pokud dojde k výjimce uvnitř coroutine, lze ji zachytit takto:
launch {
try {
// kód, který může vyvolat výjimku
} catch (e: Exception) {
// zpracování výjimky
}
}
Pro globální zpracování nedořešených výjimek lze použít CoroutineExceptionHandler:
val handler = CoroutineExceptionHandler { _, exception ->
println("Chyceno $exception")
}
GlobalScope.launch(handler) {
throw RuntimeException("Chyba")
}
Je důležité pamatovat, že výjimky v coroutinech spuštěných přes launch jsou předávány zpracovateli, zatímco v coroutinech spuštěných přes async bude výjimka vyhozena při volání await().
Proto při použití async je třeba obalit volání await() do try-catch pro správu chyb.