Junior — Middle
Sizning tajribangizda, korutinlar ichida istisnolarni qanday boshqarish amalga oshiriladi?
sobes.tech AI
AIdan javob
Android'da korutinlardagi istisnolarni boshqarish odatda korutin ichida try-catch bloklari yoki CoroutineExceptionHandler kabi maxsus mexanizmlar yordamida amalga oshiriladi.
Agar korutin ichida istisno yuzaga kelsa, uni quyidagicha ushlash mumkin:
launch {
try {
// istisno chiqarishi mumkin bo‘lgan kod
} catch (e: Exception) {
// istisno bilan ishlash
}
}
Boshqarilmaydigan istisnalarni global tarzda boshqarish uchun CoroutineExceptionHandler dan foydalanish mumkin:
val handler = CoroutineExceptionHandler { _, exception ->
println("Qabool qilindi $exception")
}
GlobalScope.launch(handler) {
throw RuntimeException("Xato")
}
Muhim nuqta, launch orqali boshlagan korutinlardagi istisnalar handlerga uzatiladi, async bilan boshlagan korutinlarda esa istisno await() chaqirilganda yuzaga keladi.
Shuning uchun, async ishlatilganda, await() chaqiruvini try-catch bilan o‘ralishi kerak, shunda xatoliklar boshqariladi.