Junior — Middle
Ako sa vo vašich skúsenostiach vykonáva spracovanie výnimiek vnútri korutín?
sobes.tech AI
Odpoveď od AI
Spracovanie výnimiek v korutinách na Androidu sa zvyčajne vykonáva pomocou blokov try-catch vo vnútri samotnej korutiny alebo pomocou špeciálnych mechanizmov, ako je CoroutineExceptionHandler.
Ak dôjde k výnimke vo vnútri korutiny, môže byť zachytená takto:
launch {
try {
// kód, ktorý môže vyvolať výnimku
} catch (e: Exception) {
// spracovanie výnimky
}
}
Pre globálne spracovanie neodchytených výnimiek sa môže použiť CoroutineExceptionHandler:
val handler = CoroutineExceptionHandler { _, exception ->
println("Chytené $exception")
}
GlobalScope.launch(handler) {
throw RuntimeException("Chyba")
}
Je dôležité pamätať, že výnimky v korutinách spustených cez launch sa prenášajú na spracovateľa, zatiaľ čo v korutinách spustených cez async bude výnimka vyhodená pri volaní await().
Preto pri použití async je potrebné obaliť volanie await() do try-catch na spracovanie chýb.