Junior — Middle
Чӣ гуна коркарди хато дар доираи CoroutineScope дар Kotlin амалӣ мешавад?
sobes.tech AI
Ҷавоб аз AI
К Kotlin-да CoroutineScope-да хато ишлаш, истисно механизмлари ва махсус хато ишловчилар орқали амалга оширилади.
Асосий усуллар:
- try-catch ичида корутин Корутин кодини try-catch блокига оралаш мумкин, шу билан маҳаллий хатоларни бошқариш мумкин.
launch {
try {
// истисно чиқариши мумкин бўлган код
} catch (e: Exception) {
// хатони ишлов бериш
}
}
- CoroutineExceptionHandler Бу махсус ишловчи бўлиб, уни корутин контекстига ўтказиш мумкин, бу launch орқали ишга туширилган (аммо async эмас) корутинлардаги ёки умумий ҳолда ёпилмаган истисноларни бошқариш учун.
val handler = CoroutineExceptionHandler { _, exception ->
println("Тўғриланди $exception")
}
val scope = CoroutineScope(Dispatchers.Main + handler)
scope.launch {
throw RuntimeException("Хатолик")
}
- asyncда хатоларни бошқариш async ҳолатда, истиснолар даражада чиқарилмайди, балки await() чақирилганда чиқарилади, шунинг учун хатоларни у ерда бошқариш керак.
val deferred = async {
throw RuntimeException("Хатолик")
}
try {
deferred.await()
} catch (e: Exception) {
// бошқариш
}
Шунинг учун, усул танлаш корутин турига ва керакли хатоларни бошқариш даражасига боғлиқ.