Junior — Middle
Kako se u vašem iskustvu vrši obrada izuzetaka unutar korutina?
sobes.tech АИ
Одговор од АИ
Obrada izuzetaka u korutinama na Androidu obično se vrši pomoću try-catch blokova unutar same korutine ili pomoću specijalnih mehanizama kao što je CoroutineExceptionHandler.
Ako dođe do izuzetka unutar korutine, on se može uhvatiti na sledeći način:
launch {
try {
// kod koji može izazvati izuzetak
} catch (e: Exception) {
// obrada izuzetka
}
}
Za globalnu obradu neuhvaćenih izuzetaka može se koristiti CoroutineExceptionHandler:
val handler = CoroutineExceptionHandler { _, exception ->
println("Uhvaćen $exception")
}
GlobalScope.launch(handler) {
throw RuntimeException("Greška")
}
Važno je zapamtiti da se izuzeci u korutinama pokrenutim putem launch prenose na handler, dok će u korutinama pokrenutim putem async izuzetak biti bačen prilikom poziva await().
Stoga, pri korišćenju async, potrebno je obuhvatiti poziv await() u try-catch blok za obradu grešaka.