Junior — Middle
Ce abordări și metode sunt utilizate pentru gestionarea erorilor în corutinele Kotlin?
sobes.tech AI
Răspuns de la AI
În Kotlin, există mai multe abordări pentru gestionarea erorilor în corutine:
- try-catch în interiorul corutinei — cel mai simplu mod de a gestiona excepțiile. Poți înveli codul din
launchsauasyncîntr-un bloctry-catch.
launch {
try {
// cod care poate arunca o excepție
} catch (e: Exception) {
// gestionarea erorii
}
}
- CoroutineExceptionHandler — un handler special care poate fi transmis în contextul corutinei. Acesta prinde excepțiile necontrolate din corutinele lansate cu
launch.
val handler = CoroutineExceptionHandler { _, exception ->
println("Capturat $exception")
}
GlobalScope.launch(handler) {
throw RuntimeException("Eroare")
}
- Gestionarea erorilor în async/await — la utilizarea lui
async, excepțiile nu sunt aruncate imediat, ci la apelarea luiawait(). De aceea, trebuie învelitawait()întry-catch.
val deferred = async {
// cod
throw Exception("Eroare")
}
try {
deferred.await()
} catch (e: Exception) {
// gestionare
}
- SupervisorJob și SupervisorScope — permit izolarea erorilor din corutinele copil, astfel încât o eroare să nu anuleze întregul scope părinte.
Așadar, alegerea metodei depinde de context și de tipul corutinei (launch sau async).