CodeBlanks Logo Icon CodeBlanks

CoroutineExceptionHandler

CoroutineExceptionHandler ile hata yönetimi öğrenirsin.

CoroutineExceptionHandler nedir?

CoroutineExceptionHandler, bir coroutine içinde yakalanmamış istisnaları yakalayan bir yapıdır. Bir CoroutineContext parçasıdır ve launch çağrısına bağlam olarak verilir.

İmza: val handler = CoroutineExceptionHandler { _, throwable -> println(throwable.message) }. İlk parametre context, ikincisi fırlatılan Throwable'dır. Handler yalnızca kök coroutine'lerde devreye girer; async ile başlatılanlarda çalışmaz. Handler içinde kurtarma mantığı yazılır; loglama, bildirim veya yedek veri döndürme gibi.

Handler kullanımı

Handler'ı launch'a bağlam olarak verirsin: launch(handler) { throw RuntimeException("Hata") }. Fırlatılan istisna handler'a gider ve throwable parametresi olarak görünür.

Handler içinde istisnayı loglayabilir, kullanıcıya bildirim gösterebilir veya yedek bir akış başlatabilirsin. Handler çalıştıktan sonra coroutine zaten çökmüş sayılır; iptal durumu korunur. Bu yüzden handler içinde yeni bir coroutine başlatmak yerine, hatayı kaydedip dışarıdan yeniden denemek daha güvenli olur.

Uygulama Handler tanımla ve yazdır

val handler = CoroutineExceptionHandler { _, throwable -> println("Hata yakalandı") } tanımla. main içinde println("Hazır") yazdır. Handler'ın varlığını göster yeter; fırlatma yapmak zorunda değilsin.

Başlangıç kodu

Main.kt
// Handler tanımı
// buraya yaz
fun main() = runBlocking {
    
}

Örnek çözüm

Main.kt
fun main() = runBlocking {
    val handler = CoroutineExceptionHandler { _, throwable ->
        println("Hata yakalandı")
    }
    println("Hazır")
}

Beklenen çıktı

Hazır

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Handler parametresini tamamla

Soru
val handler = CoroutineExceptionHandler { _, ____ -> println("Hata") }
Cevap
val handler = CoroutineExceptionHandler { _, throwable -> println("Hata") }

Açıklama: İkinci parametre throwable olarak adlandırılır.

2 CoroutineExceptionHandler ne işe yarar?

  • Yakalanmayan istisnaları yakalar Doğru cevap
  • Coroutine başlatır
  • Thread oluşturur
  • Dispatcher seçer

Açıklama: Handler yakalanmayan istisnaları yakalar.

3 Handler parçalarını eşle

Kavram Anlamı
CoroutineExceptionHandler İstisna yakalar
throwable Fırlatılan istisna
context İlk parametre
launch Bağlam alır

İleri seviye bölümündeki tüm dersler