Junior — Middle
Kaip jūsų patirtyje vyksta išimčių apdorojimas korutinų viduje?
sobes.tech AI
Atsakymas iš AI
„Android“ korutinų klaidų tvarkymas dažniausiai atliekamas naudojant try-catch blokus pačioje korutinoje arba specialiais mechanizmais, tokiais kaip CoroutineExceptionHandler.
Jei korutinoje įvyksta išimtis, ją galima sugauti taip:
launch {
try {
// kodas, kuris gali iššaukti išimtį
} catch (e: Exception) {
// išimties tvarkymas
}
}
Norint tvarkyti neapdorotas išimtis globaliai, galima naudoti CoroutineExceptionHandler:
val handler = CoroutineExceptionHandler { _, exception ->
println("Pagauta $exception")
}
GlobalScope.launch(handler) {
throw RuntimeException("Klaida")
}
Svarbu prisiminti, kad išimtys launch pradėtose korutinose perduodamos į tvarkyklę, o async pradėtose korutinose išimtis bus išmestos await() iškvietimo metu.
Todėl naudojant async, būtina apgaubti await() iškvietimą try-catch, kad būtų galima tvarkyti klaidas.