0Pricing
Kotlin Academy · Ders

runCatching ve Result<T>

İstisnaları Result içinde sarmalamak ve işlevsel biçimde işlemek için runCatching kullanın.

runCatching ve Result<T>, CoddyKit'te ücretsiz bir Kotlin Academy dersidir. Bu, 4 dersinin 3. 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.

Result<T> Kısaca

Result<T>, Kotlin'in bir işlemin sonucunu sarmalayan yapısıdır: ya T türünde bir değer içeren başarı ya da bir Throwable içeren başarısızlık.

runCatching Temelleri

runCatching { ... } bloğu çalıştırır ve sonucu bir Result içinde sarar.

fun main() {
    val good = runCatching { 10 / 2 }
    val bad  = runCatching { 10 / 0 }
    println("good isSuccess = ${good.isSuccess}")
    println("bad isFailure  = ${bad.isFailure}")
}

Değeri Çıkarma

getOrNull değeri veya null döndürür. getOrThrow başarısızlık durumunda yeniden fırlatır. getOrDefault bir geri dönüş değeri döndürür.

fun main() {
    val r = runCatching { "42".toInt() }
    println(r.getOrNull())          // 42
    println(r.getOrDefault(-1))    // 42
    val bad = runCatching { "x".toInt() }
    println(bad.getOrNull())       // null
    println(bad.getOrDefault(0))   // 0
}

Özel Durumu Çıkarma

exceptionOrNull() başarısızlıkta özel durumu, başarıda ise null döndürür.

fun main() {
    val r = runCatching { error("boom") }
    println(r.exceptionOrNull()?.message) // boom
}

map ile Dönüştürme

map { value -> ... } başarı değerini dönüştürür. Başarısızlık değişmeden aktarılır.

fun main() {
    val r = runCatching { "10" }.map { it.toInt() * 2 }
    println(r.getOrNull()) // 20
}

mapCatching

mapCatching, dönüşümü bir try/catch içine sarar; böylece lambda içindeki özel durumlar da başarısızlığa dönüşür.

fun main() {
    val r = runCatching { "abc" }.mapCatching { it.toInt() }
    println(r.isFailure) // true
    println(r.exceptionOrNull()?.message) // For input string: "abc"
}

recover ve recoverCatching

recover { e -> fallback }, bir kurtarma değeri hesaplayarak başarısızlıkları başarılara dönüştürür.

fun main() {
    val r = runCatching { "abc".toInt() }
        .recover { -1 }
    println(r.getOrNull()) // -1
}

onSuccess / onFailure

Result'ı değiştirmeden yan etkiler oluşturmak için onSuccess ve onFailure kullanın.

fun main() {
    runCatching { "42".toInt() }
        .onSuccess { println("parsed: $it") }
        .onFailure { println("failed: ${it.message}") }
}

Her İki Yol için fold

fold(onSuccess, onFailure), her iki daldan da birleşik bir tür döndürür; bu, kullanıcı arayüzüne hazır bir değere dönüştürmek için kullanışlıdır.

fun main() {
    val r = runCatching { "10".toInt() }
    val msg: String = r.fold(
        onSuccess = { "OK: $it" },
        onFailure = { "ERR: ${it.message}" }
    )
    println(msg)
}

Dönüş Türü Olarak Result Kullanma

İşlevler, hata işlemeyi çağrı noktasında açık hâle getirmek için Result<T> döndürebilir.

fun parseInt(s: String): Result<Int> = runCatching { s.toInt() }
fun main() {
    parseInt("42").onSuccess { println("got $it") }
    parseInt("xx").onFailure { println("oops: ${it.message}") }
}

İşlemleri Zincirleme

Akıcı hata işlem hatları için runCatching ile map, mapCatching ve recover işlevlerini birleştirin.

fun fetchUserId(): Result<Int> = runCatching { 42 }
fun loadName(id: Int): String = "User-$id"
fun main() {
    val name = fetchUserId()
        .map { loadName(it) }
        .recover { "Anonymous" }
        .getOrNull()
    println(name)
}

Hızlı Kontrol

Bir bloğu çalıştırıp sonucu (değer veya özel durum) Result içinde saran oluşturucu hangisidir?

Özet

Result<T>, başarı veya başarısızlığı temsil eder. runCatching ile oluşturun; map/mapCatching ile dönüştürün; recover ile kurtarın; onSuccess/onFailure ile gözlemleyin; fold ile tek bir sonuca indirgeyin. Açık hata işlem hatları için son derece kullanışlıdır.

Sıkça Sorulan Sorular

“runCatching ve Result<T>” dersi ücretsiz mi?

Evet — “runCatching ve Result<T>” 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.

“runCatching ve Result<T>” dersinde ne öğreneceğim?

İstisnaları Result içinde sarmalamak ve işlevsel biçimde işlemek için runCatching kullanı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 3. dersidir.

“runCatching ve Result<T>” 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. İfade Olarak try/catch/finally
  2. Özel İstisna Sınıfları Oluşturma
  3. runCatching ve Result
  4. İstisnaları Yeniden Fırlatma ve Zincirleme
← Kotlin Academy Sayfasına Dön