Junior — Middle
Kuidas teie kogemuses toimub erandite töötlemine korutinates?
sobes.tech AI
Vastus AI-lt
Kasutades Androidis korutinide erandite haldamine toimub tavaliselt korutina sees try-catch plokkide või spetsiaalsete mehhanismide, nagu CoroutineExceptionHandler, abil.
Kui korutinas tekib erand, saab selle kinni püüda järgmiselt:
launch {
try {
// kood, mis võib erandi põhjustada
} catch (e: Exception) {
// erandi haldamine
}
}
Globaalsete käsitlemata erandite haldamiseks saab kasutada CoroutineExceptionHandler:
val handler = CoroutineExceptionHandler { _, exception ->
println("Kätte saadud $exception")
}
GlobalScope.launch(handler) {
throw RuntimeException("Viga")
}
Oluline on meeles pidada, et launch-iga käivitatud korutinates edastatakse erandid käsitlejale, samas kui async-iga käivitatud korutinates visatakse erand välja await()-i kutsumisel.
Seetõttu, kasutades async, tuleb await()-i kutsumine katta try-catch-ga, et vigu hallata.