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 менен айландыруу керек, ошондо ката-караштарды башкаруу мүмкүн болот.