Junior — Middle
Kako se vrši obrada grešaka unutar CoroutineScope u Kotlinu?
sobes.tech АИ
Одговор од АИ
Obrada grešaka u CoroutineScope u Kotlinu se vrši pomoću mehanizama izuzetaka i specijalnih rukovalaca grešaka.
Glavni načini:
- try-catch unutar korutine Kod korutine može biti obmotan u try-catch blok za lokalnu obradu izuzetaka.
launch {
try {
// kod koji može izazvati izuzetak
} catch (e: Exception) {
// obrada greške
}
}
- CoroutineExceptionHandler Ovo je poseban rukovalac koji se može proslediti u kontekst korutine za globalnu obradu neobrađenih izuzetaka u korutinama pokrenutim putem launch (ali ne i async).
val handler = CoroutineExceptionHandler { _, exception ->
println("Uhvaćen $exception")
}
val scope = CoroutineScope(Dispatchers.Main + handler)
scope.launch {
throw RuntimeException("Greška")
}
- Obrada grešaka u async U slučaju async, izuzeci se ne bacaju odmah, već pri pozivu await(), tako da je obrada grešaka tamo.
val deferred = async {
throw RuntimeException("Greška")
}
try {
deferred.await()
} catch (e: Exception) {
// obrada
}
Dakle, izbor metode zavisi od tipa korutine i željenog nivoa obrade grešaka.