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:
- 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
}
}
- 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")
}
- 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.