Junior — Middle
Kotlin'dagi korutinlarda xatoliklarni qanday boshqarish usullari va yondashuvlari mavjud?
sobes.tech AI
AIdan javob
Kotlin'da, korutinlarda xatolarni boshqarish uchun bir nechta yondashuvlar mavjud:
- try-catch ichida korutin — eng oddiy xatolarni boshqarish usuli. Siz
launchyokiasyncichida kodnitry-catchblokiga olishingiz mumkin.
launch {
try {
// xatolik keltirib chiqarishi mumkin bo'lgan kod
} catch (e: Exception) {
// xatoni boshqarish
}
}
- CoroutineExceptionHandler — maxsus boshqaruvchi bo'lib, uni korutina kontekstiga o'tkazish mumkin. U
launchorqali boshlagan korutinadagi boshqarilmagan xatolarni ushlaydi.
val handler = CoroutineExceptionHandler { _, exception ->
println("Yopilgan $exception")
}
GlobalScope.launch(handler) {
throw RuntimeException("Xato")
}
- async/await bilan xatolarni boshqarish —
asyncishlatilganda, xatolar darhol tashlanmaydi, balkiawait()chaqirilganda tashlanadi. Shuning uchun,await()nitry-catchbilan o'rash kerak.
val deferred = async {
// kod
throw Exception("Xato")
}
try {
deferred.await()
} catch (e: Exception) {
// boshqarish
}
- SupervisorJob va SupervisorScope — bolalar korutinalaridagi xatolarni izolyatsiya qilish imkonini beradi, shunda bir xato butun ota-ona scope'ini bekor qilmaydi.
Shuning uchun, usul tanlovi kontekst va korutina turiga (launch yoki async) bog'liq.