Sobes.tech
Junior — Middle

Kotlin-də korutinlərdə səhvlərin idarə olunması üçün hansı yanaşmalar və metodlar istifadə olunur?

sobes.tech Süni İntellekt

AI-dan cavab

Kotlin-də, korutinlərdə səhvləri idarə etmək üçün bir neçə yanaşma mövcuddur:

  1. try-catch korutin daxilində — ən sadə səhv idarəetmə üsulu. Siz launch və ya async daxilindəki kodu try-catch blokuna sala bilərsiniz.
launch {
    try {
        // istisna ata biləcək kod
    } catch (e: Exception) {
        // səhv idarəetməsi
    }
}
  1. CoroutineExceptionHandler — xüsusi bir idarəedicidir ki, korutina kontekstinə ötürülə bilər. Bu, launch ilə başlatılan korutinlərdə idarə olunmamış istisnaları tutar.
val handler = CoroutineExceptionHandler { _, exception ->
    println("Yekun $exception")
}

GlobalScope.launch(handler) {
    throw RuntimeException("Xəta")
}
  1. async/await ilə səhvlərin idarə olunmasıasync istifadə edildikdə, istisnalar dərhal atılmır, əvəzinə await() çağırıldıqda atılır. Ona görə də, await()-i try-catch-a salmaq lazımdır.
val deferred = async {
    // kod
    throw Exception("Xəta")
}

try {
    deferred.await()
} catch (e: Exception) {
    // idarəetmə
}
  1. SupervisorJob və SupervisorScope — uşaqlar korutinlərinin səhvlərini izolyasiya etməyə imkan verir, beləliklə, bir səhv bütün valideyn scope-un ləğv olunmamasını təmin edir.

Bu səbəbdən, metod seçimi kontekstdən və korutina növündən (launch və ya async) asılıdır.