Sobes.tech
Junior — Middle

Deneyiminizde, coroutine'ler içinde istisna işlemi nasıl gerçekleştirilir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Android'de coroutinlerde istisna yönetimi genellikle coroutin içinde try-catch blokları veya CoroutineExceptionHandler gibi özel mekanizmalar kullanılarak yapılır.

Bir coroutine içinde istisna oluşursa, şu şekilde yakalanabilir:

launch {
    try {
        // istisna oluşturabilecek kod
    } catch (e: Exception) {
        // istisna işlemi
    }
}

İşlenmemiş istisnaların küresel olarak yönetimi için CoroutineExceptionHandler kullanılabilir:

val handler = CoroutineExceptionHandler { _, exception ->
    println("Yakalandı $exception")
}

GlobalScope.launch(handler) {
    throw RuntimeException("Hata")
}

Önemli bir nokta, launch ile başlatılan coroutinlerde istisnaların handler’a iletilmesi, async ile başlatılan coroutinlerde ise istisnanın await() çağrıldığında fırlatılmasıdır.

Bu nedenle, async kullanırken, await() çağrısı bir try-catch ile çevrelenmelidir, böylece hatalar yönetilebilir.