Sobes.tech
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.