Junior — Middle
Cum se realizează gestionarea excepțiilor în interiorul corutinelor în experiența dvs.?
sobes.tech AI
Răspuns de la AI
Gestionarea excepțiilor în corutine pe Android se face de obicei folosind blocuri try-catch în interiorul corutinei sau prin mecanisme speciale, cum ar fi CoroutineExceptionHandler.
Dacă apare o excepție în interiorul unei corutine, aceasta poate fi prinsă astfel:
launch {
try {
// cod care poate arunca o excepție
} catch (e: Exception) {
// gestionarea excepției
}
}
Pentru gestionarea globală a excepțiilor necontrolate, se poate folosi CoroutineExceptionHandler:
val handler = CoroutineExceptionHandler { _, exception ->
println("Capturat $exception")
}
GlobalScope.launch(handler) {
throw RuntimeException("Eroare")
}
Este important să reținem că excepțiile din corutinele lansate prin launch sunt transmise către handler, în timp ce în cele lansate prin async, excepția va fi aruncată la apelarea await().
Prin urmare, atunci când se folosește async, trebuie să învelim apelul await() într-un try-catch pentru a gestiona erorile.