Sobes.tech
Junior — Middle

Тажрыйбаңызда корутиндердин ичинде кырдаалдарды иштетүү кандай жүргүзүлөт?

sobes.tech AI

AIден жооп

Androidда корутиндердеги ката-караштардын башкарылышы адатта корутиндин өзү ичинде try-catch блоктору же атайын механизмдер, мисалы, CoroutineExceptionHandler аркылуу жүргүзүлөт.

Эгер корутиндин ичинде ката пайда болсо, аны мындайча кармай аласыз:

launch {
    try {
        // ката чыгара турган код
    } catch (e: Exception) {
        // ката менен иштөө
    }
}

Глобалдуу түрдө кармоо үчүн CoroutineExceptionHandler колдонулушу мүмкүн:

val handler = CoroutineExceptionHandler { _, exception ->
    println("Тамга салынды $exception")
}

GlobalScope.launch(handler) {
    throw RuntimeException("Ката")
}

Маанилүү, launch аркылуу ишке киргизилген корутиндердеги ката-караштар handlerге өткөрүлөт, ал эми async аркылуу ишке киргизилгендерде ката await() чакырылганда чыгат.

Ошондуктан, async колдонуп жатканда, await() чакыруусун try-catch менен айландыруу керек, ошондо ката-караштарды башкаруу мүмкүн болот.