Junior — Middle
Kotlin'da CoroutineScope doirasida xatoliklarni qanday boshqariladi?
sobes.tech AI
AIdan javob
Kotlin'da CoroutineScope'da xatoliklarni boshqarish istisnolar va maxsus xatoliklarni qayta ishlovchi mexanizmlar yordamida amalga oshiriladi.
Asosiy usullar:
- try-catch ichida korutina Korutina kodini try-catch blokiga o'rash mumkin, shunda lokal xatoliklarni boshqarish mumkin.
launch {
try {
// istisno chiqarishi mumkin bo'lgan kod
} catch (e: Exception) {
// xatolikni boshqarish
}
}
- CoroutineExceptionHandler Bu maxsus handler bo'lib, uni korutina kontekstiga o'tkazish mumkin, bu launch orqali ishga tushirilgan korutinalardagi (ammo async emas) yakunlanmagan istisnolarni global tarzda boshqarish uchun.
val handler = CoroutineExceptionHandler { _, exception ->
println("Qabool qilindi $exception")
}
val scope = CoroutineScope(Dispatchers.Main + handler)
scope.launch {
throw RuntimeException("Xato")
}
- async'da xatoliklarni boshqarish async holatida, istisnolar darhol chiqarilmaydi, balki await() chaqirilganda chiqariladi, shuning uchun xatoliklarni boshqarish shunda bo'lishi kerak.
val deferred = async {
throw RuntimeException("Xato")
}
try {
deferred.await()
} catch (e: Exception) {
// boshqarish
}
Shunday qilib, usul tanlovi korutina turiga va xatoliklarni boshqarish darajasiga bog'liq.