Sobes.tech
Middle — Middle+

Çocuk koroutinleri ile ana koroutine arasındaki hata ayrımını nasıl sağlayabilirsiniz?

sobes.tech yapay zeka

AI'dan gelen yanıt

Kotlin Coroutines'te, çocuk coroutine'lar ile ana coroutine arasındaki hataları ayırmak için coroutine hiyerarşisi kavramı ve CoroutineExceptionHandler ile SupervisorJob kullanılır.

Varsayılan olarak, bir çocuk coroutine hata verdiğinde, bu tüm hiyerarşiyi, yani ana coroutine ve diğer çocukları iptal eder.

Hataları ayırmak ve çocukların hataları nedeniyle ana'nın iptal edilmesini önlemek için SupervisorJob veya supervisorScope kullanılır. Bu durumda, çocuk coroutine'ların hataları ana ve diğer çocukları iptal etmez.

Örnek:

val supervisor = SupervisorJob()
val scope = CoroutineScope(Dispatchers.Default + supervisor)

scope.launch {
    val child1 = launch {
        // Bu coroutine hata verebilir
        throw RuntimeException("child1 hatası")
    }
    val child2 = launch {
        // Bu coroutine devam edecek
        delay(1000)
        println("child2 başarıyla tamamlandı")
    }
}

Burada, child1'deki hata child2 veya ana coroutine'in iptaline neden olmaz.

Hataları yönetmek için CoroutineExceptionHandler veya try-catch kullanılabilir.

Bu şekilde, hata ayırma SupervisorJob ve doğru hata yönetimi ile sağlanır.