Sobes.tech
Junior — Middle

Чӣ гуна коркарди хато дар доираи CoroutineScope дар Kotlin амалӣ мешавад?

sobes.tech AI

Ҷавоб аз AI

К Kotlin-да CoroutineScope-да хато ишлаш, истисно механизмлари ва махсус хато ишловчилар орқали амалга оширилади.

Асосий усуллар:

  1. try-catch ичида корутин Корутин кодини try-catch блокига оралаш мумкин, шу билан маҳаллий хатоларни бошқариш мумкин.
launch {
    try {
        // истисно чиқариши мумкин бўлган код
    } catch (e: Exception) {
        // хатони ишлов бериш
    }
}
  1. CoroutineExceptionHandler Бу махсус ишловчи бўлиб, уни корутин контекстига ўтказиш мумкин, бу launch орқали ишга туширилган (аммо async эмас) корутинлардаги ёки умумий ҳолда ёпилмаган истисноларни бошқариш учун.
val handler = CoroutineExceptionHandler { _, exception ->
    println("Тўғриланди $exception")
}

val scope = CoroutineScope(Dispatchers.Main + handler)
scope.launch {
    throw RuntimeException("Хатолик")
}
  1. asyncда хатоларни бошқариш async ҳолатда, истиснолар даражада чиқарилмайди, балки await() чақирилганда чиқарилади, шунинг учун хатоларни у ерда бошқариш керак.
val deferred = async {
    throw RuntimeException("Хатолик")
}
try {
    deferred.await()
} catch (e: Exception) {
    // бошқариш
}

Шунинг учун, усул танлаш корутин турига ва керакли хатоларни бошқариш даражасига боғлиқ.