Junior — Middle
Kotlinдеги CoroutineScope чөйрөсүндө каталардын иштетилиши кандай жүргүзүлөт?
sobes.tech AI
AIден жооп
Kotlin'de CoroutineScope içindeki hata işleme, istisnalar ve özel hata işleyicileri aracılığıyla gerçekleştirilir.
Негізгі әдістер:
- 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) {
// иштетүү
}
Мындайча айтканда, ыкма тандоо корутиндин түрүнө жана каалаган каталардын иштетүү деңгээлине көз каранды.