0Pricing
Kotlin Academy · Ders

İşlevsel Hata İşleme

Eşleyin ve kurtarın

İşlevsel Hata İşleme, CoddyKit'te ücretsiz bir Kotlin Academy dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Kotlin Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Kotlin Academy kursu toplamda 4 dersten oluşur.

Veri Akışları Olarak Hatalar

İşlevsel hata yönetimi, başarısızlıkları başarılı değerleri dönüştürdüğünüz gibi dönüştürebileceğiniz, zincirleyebileceğiniz ve kurtarabileceğiniz değerler olarak ele alır. Yerleşik Result tam olarak bunun için işleçler sunar.

Eşleme

map, bir success değerini dönüştürür ve failure durumunu değiştirmeden bırakır; onu olduğu gibi aktarır.

fun main() {
    val r = Result.success(5).map { it * 2 }
    println(r.getOrNull())
    val f = Result.failure<Int>(Exception("x")).map { it * 2 }
    println(f.getOrNull())
}

mapCatching

Dönüştürme işleminin kendisi hata fırlatabilecekse mapCatching, bu istisnayı dışarı kaçmasına izin vermek yerine sonucun içine alır.

fun main() {
    val r = Result.success("10").mapCatching { it.toInt() }
    println(r.getOrNull())
    val bad = Result.success("oops").mapCatching { it.toInt() }
    println(bad.isFailure)
}

recover

recover, istisnadan bir değer hesaplayarak failure durumunu yeniden success durumuna dönüştürür. Success durumu değişmeden aktarılır.

fun main() {
    val r = Result.failure<Int>(Exception("down")).recover { 0 }
    println(r.getOrNull())
    val ok = Result.success(7).recover { 0 }
    println(ok.getOrNull())
}

recoverCatching

Kurtarma mantığı da başarısız olabilecekse recoverCatching bu denemeyi sarar ve her şeyi sonuç olarak korur.

fun main() {
    val r = Result.failure<Int>(Exception()).recoverCatching {
        "5".toInt()
    }
    println(r.getOrNull())
}

onSuccess ve onFailure

Bunlar sonucu değiştirmeden yan etkileri çalıştırır ve sonucu sonraki zincirlemelerde kullanılmak üzere döndürür. Günlük kaydı için idealdir.

fun main() {
    runCatching { "3".toInt() }
        .onSuccess { println("ok " + it) }
        .onFailure { println("fail " + it.message) }
        .also { println("done") }
}

İşlem Hattını Zincirleme

Operatörler temiz bir işlem hattı oluşturacak şekilde birleşir: yakalama, dönüştürme ve kurtarma. Bunların tümü iç içe try/catch olmadan yapılır.

fun main() {
    val result = runCatching { "21".toInt() }
        .map { it * 2 }
        .recover { -1 }
        .getOrThrow()
    println(result)
}

fold ile Son Değere Ulaşma

Her iki dalı tek bir somut değerde, örneğin kullanıcıya gösterilecek bir mesajda birleştirmek için işlem hattını fold ile sonlandırın.

fun main() {
    val msg = runCatching { "x".toInt() }
        .map { it + 1 }
        .fold(
            onSuccess = { "result: " + it },
            onFailure = { "failed: " + it.message }
        )
    println(msg)
}

Özel Tür Üzerinde Eşleme

map gibi uzantı işlevleri yazarak kendi mühürlü sonuç türünüze de aynı kullanım kolaylığını kazandırabilirsiniz.

sealed class Res<out T> {
    data class Ok<T>(val v: T) : Res<T>()
    data class Err(val msg: String) : Res<Nothing>()
}

fun <T, R> Res<T>.map(f: (T) -> R): Res<R> = when (this) {
    is Res.Ok -> Res.Ok(f(v))
    is Res.Err -> this
}

fun main() {
    val r = Res.Ok(4).map { it * 3 }
    println(r)
}

İşlevsel Yaklaşımın Faydaları

İşlevsel hata işleme, hatalar bildirime dayalı olarak akarken normal akışın okunabilir kalmasını sağlar. Her yere dağılmış try/catch yoktur ve tür sistemi başarısızlığı baştan sona izler.

Hepsini Bir Araya Getirme

Artık tam bir araç setiniz var:

  • Dönüştürmek için map / mapCatching
  • İyileştirmek için recover / recoverCatching
  • Yan etkiler için onSuccess / onFailure
  • Sonlandırmak için fold

Hızlı Kontrol

İşlevsel hata işleme konusundaki anlayışınızı sınayın.

Özet

İşlevsel hata işlemeyi öğrendiniz:

  • map / mapCatching ile dönüştürme
  • recover / recoverCatching ile iyileştirme
  • onSuccess / onFailure ile gözlemleme
  • fold ile sonlandırma

Bu, Result ve hata modelleme kursunu tamamlar.

Sıkça Sorulan Sorular

“İşlevsel Hata İşleme” dersi ücretsiz mi?

Evet — “İşlevsel Hata İşleme” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Kotlin Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Kotlin Academy kursu toplamda 4 dersten oluşur.

“İşlevsel Hata İşleme” dersinde ne öğreneceğim?

Eşleyin ve kurtarın Kotlin Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Kotlin Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Kotlin Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.

“İşlevsel Hata İşleme” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Kotlin Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Kotlin Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Result Türü
  2. runCatching
  3. Mühürlü Result Hiyerarşileri
  4. İşlevsel Hata İşleme
← Kotlin Academy Sayfasına Dön