Sobes.tech
Junior — Middle

Kotlin'de CoroutineScope içinde hata yönetimi nasıl gerçekleştirilir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Kotlin'de CoroutineScope içindeki hata işleme, istisna mekanizmaları ve özel hata işleyicileri kullanılarak gerçekleştirilir.

Ana yöntemler:

  1. try-catch içinde coroutine Coroutine kodu, yerel hata işleme için try-catch bloğuna sarılabilir.
launch {
    try {
        // istisna atabilecek kod
    } catch (e: Exception) {
        // hata işleme
    }
}
  1. CoroutineExceptionHandler Bu, launch ile başlatılan coroutine'lerde yakalanmamış istisnaları küresel olarak işlemek için coroutine bağlamına geçirilebilen özel bir işleyicidir (async ile değil).
val handler = CoroutineExceptionHandler { _, exception ->
    println("Yakalandı $exception")
}

val scope = CoroutineScope(Dispatchers.Main + handler)
scope.launch {
    throw RuntimeException("Hata")
}
  1. async'de hata işleme async durumunda, istisnalar hemen atılmaz, ancak await() çağrıldığında atılır, bu nedenle hata işleme orada yapılmalıdır.
val deferred = async {
    throw RuntimeException("Hata")
}
try {
    deferred.await()
} catch (e: Exception) {
    // işleme
}

Bu nedenle, yöntem seçimi coroutine türüne ve istenen hata işleme seviyesine bağlıdır.