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.