Sobes.tech
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.