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

  1. 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
    }
}
  1. 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")
}
  1. 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.