0Pricing
Scala for Backend Engineering & Functional Programming · Ders

Hatalar için Option, Try ve Either

Değerin yokluğunu belirtmek için `Seçenek`, özel durumlar için `Deneme`, farklı başarısızlık ve başarı yolları için `Either` kullanarak sağlam hata işleme uygulayın.

Hatalar için Option, Try ve Either, CoddyKit'te ücretsiz bir Scala for Backend Engineering & Functional Programming dersidir. Bu, 3 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, 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 3 dersten oluşur.

Hataları Sorunsuzca Yönetme

Programlamada işler her zaman planlandığı gibi gitmez. Dosyalar mevcut olmayabilir, ağ istekleri başarısız olabilir veya hesaplamalar geçersiz sonuçlara yol açabilir.

  • Bu durumları sorunsuzca yönetebilen sağlam kodu nasıl yazarız?
  • Scala, her yerde `null` kullanmaya veya istisnalar fırlatmaya başvurmadan hataları ve eksik değerleri yönetmek için güçlü araçlar sunar.

Null Sorunu

Birçok dil, bir değerin yokluğunu belirtmek için null kullanır. Ancak null, korkulan NullPointerException gibi hataların yaygın bir kaynağıdır.

Scala, null kullanımını önermez. Bunun yerine bir değerin eksik olabileceğini açıkça belirten türler sunar; böylece kodunuz daha güvenli ve anlaşılır olur.

Scala Option'a Giriş

Option[A], A türünde bir değer (Some[A] ile gösterilir) veya hiçbir değer (None ile gösterilir) barındırabilen bir kapsayıcıdır.

  • Bir değerin bulunmayabileceği durumu göz önünde bulundurmanızı zorunlu kılar.
  • Bu, beklenmeyen NullPointerExceptions oluşmasını önler ve kodunuzu daha açık hâle getirir.

Uygulamada Option: Some ve None

Option'ın nasıl çalıştığını görelim. Bir ID'ye bağlı olarak bir ad döndürebilen veya döndürmeyebilen bir işlev tanımlayacağız.

object Main {
  def findUser(id: Int): Option[String] = {
    if (id == 1) Some("Alice")
    else None
  }

  def main(args: Array[String]): Unit = {
    val user1 = findUser(1) // Some("Alice")
    val user2 = findUser(2) // None

    println(s"User 1: $user1")
    println(s"User 2: $user2")
  }
}

Option ile Çalışma: map ve getOrElse

Bir Option içindeki değeri map kullanarak dönüştürebilir veya değer None olduğunda getOrElse ile varsayılan bir değer sağlayabilirsiniz.

object Main {
  def findUser(id: Int): Option[String] = {
    if (id == 1) Some("Alice")
    else None
  }

  def main(args: Array[String]): Unit = {
    val userGreeting = findUser(1).map(name => s"Hello, $name!")
    val defaultGreeting = findUser(2).map(name => s"Hello, $name!").getOrElse("Hello, Guest!")

    println(s"User greeting: $userGreeting")
    println(s"Default greeting: $defaultGreeting")
  }
}

Scala Try'a Giriş

Option eksik değerleri ele alırken Try[A], istisna fırlatabilecek hesaplamaları ele almak için tasarlanmıştır.

  • Bir Try, hesaplama normal şekilde tamamlanırsa Success[A], bir istisna oluşursa Failure[Throwable] olabilir.
  • İstisnaları kapsüller ve bunlarla işlevsel bir biçimde ilgilenmenizi sağlar.

Uygulamada Try: Success ve Failure

Bir istisna (örneğin sıfıra bölme) fırlatabilecek bir işlev tanımlayalım ve yürütülmesini bir Try içine alalım.

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

object Main {
  def divide(a: Int, b: Int): Try[Int] = Try {
    a / b
  }

  def main(args: Array[String]): Unit = {
    val result1 = divide(10, 2) // Success(5)
    val result2 = divide(10, 0) // Failure(java.lang.ArithmeticException: / by zero)

    println(s"Result 1: $result1")
    println(s"Result 2: $result2")
  }
}

Try ile Çalışma: recover ve fold

Try, belirli istisnaları ele almak için recover veya hem başarı hem de başarısızlık durumlarını düzenli biçimde işlemek için fold gibi yöntemler sunar.

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

object Main {
  def parseNumber(s: String): Try[Int] = Try(s.toInt)

  def main(args: Array[String]): Unit = {
    val num1 = parseNumber("123").getOrElse(0)
    val num2 = parseNumber("abc").getOrElse(0)

    val message = parseNumber("456").fold(
      ex => s"Failed to parse: ${ex.getMessage}",
      num => s"Parsed number: $num"
    )

    println(s"Parsed num1: $num1")
    println(s"Parsed num2: $num2")
    println(s"Message: $message")
  }
}

Scala Either'a Giriş

Either[L, R], iki olası değerden birini temsil eden bir türdür. Geleneksel olarak:

  • Left[L] bir başarısızlığı (veya L hata türünü) temsil eder.
  • Right[R] bir başarıyı (veya R sonuç türünü) temsil eder.

Try'ın aksine Either, hatanız için yalnızca Throwable yerine anlamlı bir tür belirtmenize olanak tanır.

Uygulamada Either: Left ve Right

Burada bir e-postayı doğrulayan bir işlev bulunuyor. İşlev, bir String hata iletisi (Left) veya doğrulanmış e-postayı (Right) döndürür.

object Main {
  def validateEmail(email: String): Either[String, String] = {
    if (email.contains("@") && email.contains(".")) Right(email)
    else Left("Invalid email format")
  }

  def main(args: Array[String]): Unit = {
    val email1 = validateEmail("test@example.com") // Right("test@example.com")
    val email2 = validateEmail("invalid-email")   // Left("Invalid email format")

    println(s"Email 1: $email1")
    println(s"Email 2: $email2")
  }
}

Hızlı Denetim: Hata Yönetimi

Bir eşlemden yapılandırma değeri okuyan bir işlev yazıyorsunuz. Anahtar mevcutsa dize değerini bir tamsayıya dönüştürmek istiyorsunuz. Anahtar eksikse veya dönüştürme başarısız olursa 0 varsayılan değerini döndürmek istiyorsunuz.

Bu görev için hangi Scala türleri ve yöntemleri birleşimi en uygun olur?

Tekrar: Option, Try, Either

Sağlam hata yönetimi için üç güçlü Scala türünü inceledik:

  • Option[A]: Bir değerin yokluğunu ele almak için (Some[A] veya None).
  • Try[A]: İstisna fırlatabilecek hesaplamaları kapsüllemek için (Success[A] veya Failure[Throwable]).
  • Either[L, R]: Genellikle bir başarısızlık türü L ve bir başarı türü R olmak üzere iki farklı sonucu temsil etmek için (Left[L] veya Right[R]).

Bu türleri kullanmak Scala kodunuzu daha güvenli, daha açık ve daha işlevsel hâle getirir!

Sıkça Sorulan Sorular

“Hatalar için Option, Try ve Either” dersi ücretsiz mi?

Evet — “Hatalar için Option, Try ve Either” 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 3 dersten oluşur.

“Hatalar için Option, Try ve Either” dersinde ne öğreneceğim?

Değerin yokluğunu belirtmek için `Seçenek`, özel durumlar için `Deneme`, farklı başarısızlık ve başarı yolları için `Either` kullanarak sağlam hata işleme uygulayın. 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, 3 dersinin 3. dersidir.

“Hatalar için Option, Try ve Either” 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. Değişmez Koleksiyonları Derinlemesine İnceleme
  2. Koleksiyonlarda İşlevsel İşlemler
  3. Hatalar için Option, Try ve Either
← Scala for Backend Engineering & Functional Programming Sayfasına Dön