Junior — Middle
Kotlin-də CoroutineScope daxilində səhvlərin idarə olunması necə həyata keçirilir?
sobes.tech Süni İntellekt
AI-dan cavab
Kotlin-də CoroutineScope-də səhv emalı istisnalar və xüsusi səhv emalçıları vasitəsilə həyata keçirilir.
Əsas üsullar:
- try-catch daxilində korutina Korutina kodunu try-catch blokuna daxil etmək mümkündür ki, yerli səhv emalı həyata keçirilsin.
launch {
try {
// istisna ata bilən kod
} catch (e: Exception) {
// səhv emalı
}
}
- CoroutineExceptionHandler Bu, korutina kontekstinə əlavə edilə bilən xüsusi bir emalçıdir və launch ilə başlatılmış korutinalarda (amma async ilə deyil) qeydə alınmayan istisnaları qlobal şəkildə emal etmək üçün istifadə olunur.
val handler = CoroutineExceptionHandler { _, exception ->
println("Yekun $exception")
}
val scope = CoroutineScope(Dispatchers.Main + handler)
scope.launch {
throw RuntimeException("Xəta")
}
- async-də səhv emalı async-də istisnalar dərhal atılmır, əvəzinə await() çağırıldıqda atılır, ona görə də səhv emalı orada həyata keçirilməlidir.
val deferred = async {
throw RuntimeException("Xəta")
}
try {
deferred.await()
} catch (e: Exception) {
// emal
}
Beləliklə, üsul seçimi korutina növündən və istənilən səhv emal səviyyəsindən asılıdır.