0Pricing
Scala for Backend Engineering & Functional Programming · Ders

Try, Success, Failure

Özel durum işleme

Try, Success, Failure, CoddyKit'te ücretsiz bir Scala for Backend Engineering & Functional Programming dersidir. Bu, 4 dersinin 2. 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, Scala for Backend Engineering & Functional Programming öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Scala for Backend Engineering & Functional Programming kursu toplamda 4 dersten oluşur.

Try nedir?

Try[T], bir değer üretebilen veya bir istisna fırlatabilen hesaplamayı temsil eder. İki alt türü vardır:

  • Success[T], normal bir sonucu sarar.
  • Failure, bir Throwable değerini sarar.

İstisna fırlatan kodu, birleştirebileceğiniz bir değere dönüştürür.

Try'ı içe aktarma

Try, scala.util içinde bulunur. İstisna fırlatabilecek her ifadeyi Try { ... } içine sarın; bu yapı ölümcül olmayan istisnaları sizin için yakalar.

import scala.util.Try

@main def run(): Unit = {
  val ok = Try(10 / 2)
  val bad = Try(10 / 0)
  println(ok)
  println(bad)
}

Success ve Failure

Normal biçimde tamamlanan bir Try, değeri tutan bir Success olur; istisna fırlatan bir Try ise istisnayı tutan bir Failure olur.

import scala.util.{Try, Success, Failure}

@main def run(): Unit = {
  val result = Try("123".toInt)
  result match {
    case Success(n) => println(s"parsed: $n")
    case Failure(e) => println(s"failed: ${e.getMessage}")
  }
}

Başarısızlıklar üzerinde desen eşleme

Sarılan kod istisna fırlattığında Failure içindeki istisnayı inceleyebilirsiniz. Burada hatalı bir ayrıştırma temiz biçimde yakalanır.

import scala.util.{Try, Success, Failure}

@main def run(): Unit = {
  val result = Try("abc".toInt)
  result match {
    case Success(n) => println(s"got $n")
    case Failure(e) => println(s"error type: ${e.getClass.getSimpleName}")
  }
}

Try ile getOrElse

getOrElse, başarı değerini döndürür veya Try başarısız olduğunda varsayılan bir değer döndürür. Böylece hiç istisna fırlatılmaz.

import scala.util.Try

@main def run(): Unit = {
  val n = Try("oops".toInt).getOrElse(-1)
  println(n)
}

Try üzerinde map

map, bir Success değerini dönüştürür. Özgün değer bir Failure ise veya eşleme işlevi istisna fırlatırsa sonuç yine Failure olur.

import scala.util.Try

@main def run(): Unit = {
  val doubled = Try("21".toInt).map(_ * 2)
  val failed  = Try("x".toInt).map(_ * 2)
  println(doubled)
  println(failed)
}

recover: İstisnayı ele alma

recover, belirli istisnaları kısmi bir işlevle ele alarak bir Failure değerini yeniden Success değerine dönüştürmenizi sağlar.

import scala.util.Try

@main def run(): Unit = {
  val safe = Try("x".toInt).recover {
    case _: NumberFormatException => 0
  }
  println(safe)
}

recoverWith

recoverWith, işleyicinin düz bir değer yerine başka bir Try döndürmesi dışında recover gibidir. Kurtarma işleminin kendisi de başarısız olabilecekse bunu kullanın.

import scala.util.Try

@main def run(): Unit = {
  val result = Try("x".toInt).recoverWith {
    case _: NumberFormatException => Try("42".toInt)
  }
  println(result)
}

toEither ve toOption

Try, diğer hata türlerine kolayca dönüştürülebilir:

  • toOption: Success, Some olur; Failure, None olur.
  • toEither: Success, Right olur; Failure, Left(throwable) olur.
import scala.util.Try

@main def run(): Unit = {
  println(Try("5".toInt).toOption)
  println(Try("x".toInt).toOption)
  println(Try("5".toInt).toEither.isRight)
}

flatMap ile zincirleme

flatMap, her biri bir Try döndüren hesaplamaları sıralı biçimde yürütür. Herhangi bir adım başarısız olursa tüm zincir o Failure değerinde kısa devre yapar.

import scala.util.Try

object Main {
  def half(n: Int): Try[Int] = Try(if (n % 2 == 0) n / 2 else throw new RuntimeException("odd"))

  def main(args: Array[String]): Unit = {
    println(Try("8".toInt).flatMap(half))
    println(Try("7".toInt).flatMap(half))
  }
}

Try ve try/catch karşılaştırması

Try, istisnaları değerlere dönüştürür; böylece iç içe try/catch blokları olmadan map, flatMap kullanabilir ve sonuçları birleştirebilirsiniz. Yalnızca ölümcül olmayan istisnaları yakalar; OutOfMemoryError gibi ciddi hatalar yayılmaya devam eder.

Kısa Kontrol

Try konusundaki bilginizi sınayın.

Özet

Try ile istisna işlemeyi öğrendiniz:

  • Try { ... }, ölümcül olmayan istisnaları Failure olarak, normal sonuçları Success olarak yakalar.
  • map/flatMap ile dönüştürün; recover/recoverWith ile kurtarın.
  • getOrElse ile varsayılanlar sağlayın.
  • toOption ve toEither ile dönüştürün.

Sıkça Sorulan Sorular

“Try, Success, Failure” dersi ücretsiz mi?

Evet — “Try, Success, Failure” 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 Scala for Backend Engineering & Functional Programming kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Scala for Backend Engineering & Functional Programming kursu toplamda 4 dersten oluşur.

“Try, Success, Failure” dersinde ne öğreneceğim?

Özel durum işleme Scala for Backend Engineering & Functional Programming 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.

Scala for Backend Engineering & Functional Programming öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Scala for Backend Engineering & Functional Programming, 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 2. dersidir.

“Try, Success, Failure” 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 Scala for Backend Engineering & Functional Programming dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Scala for Backend Engineering & Functional Programming 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. Hatalar için Either
  2. Try, Success, Failure
  3. Either Birleştirme
  4. Türler Arasında Dönüştürme
← Scala for Backend Engineering & Functional Programming Sayfasına Dön