0Pricing
Swift Academy · Ders

Hata İşleme Operatörleri

catch, retry ve replaceError ile kurtarma sağlayın.

Hata İşleme Operatörleri, CoddyKit'te ücretsiz bir Swift 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, Swift Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Swift Academy kursu toplamda 4 dersten oluşur.

Birleştirme'de Hatalar

Birleştirme yayımlayıcılarının bir hata türü vardır. Bir yayımlayıcı hata verdiğinde akışı sonlandırır; artık başka değer yayımlanmaz. Dayanıklı akışlar oluşturmak için hataları ele alan, dönüştüren veya gideren işleçlere ihtiyacınız vardır.

Hata Türü

Her yayımlayıcı bir Output ve bir Failure tanımlar. Bir akışın derlenebilmesi için hata türlerinin uyumlu olması gerekir; bu nedenle hataları değiştiren işleçler sık kullanılır.

let publisher: AnyPublisher<Data, URLError> = apiClient.request()
// Output = Data, Failure = URLError

catch

catch, bir hatayı yakalar ve hata veren yayımlayıcının yerine yeni bir yayımlayıcı koyar. Böylece bir şeyler ters gittiğinde yedek değerler sağlayabilirsiniz.

apiClient.fetchUser()
    .catch { error in
        Just(User.guest)
    }
    .sink { user in
        print("Got", user.name)
    }
    .store(in: &cancellables)

replaceError

replaceError(with:), catch'in daha basit bir biçimidir: herhangi bir hatayı tek bir yedek değerle değiştirir ve işlemi başarıyla tamamlar.

apiClient.fetchCount()
    .replaceError(with: 0)
    .sink { count in
        self.badge.text = "\(count)"
    }
    .store(in: &cancellables)

retry

retry(n), hata verdiğinde üst akışa en fazla n kez yeniden abone olur. Geçici ağ hataları için idealdir.

apiClient.fetchData()
    .retry(3)
    .sink(receiveCompletion: { print($0) },
          receiveValue: { print($0) })
    .store(in: &cancellables)

retry ve yakalamayı birleştirme

Yaygın bir dayanıklılık düzeni: birkaç kez retry uygulayın, ardından tüm denemeler başarısız olursa geri dönüş için catch kullanın.

apiClient.fetchData()
    .retry(2)
    .catch { _ in
        Just(Data())
    }
    .sink { data in
        self.process(data)
    }
    .store(in: &cancellables)

mapError

mapError bir hata türünü başka bir hata türüne dönüştürür. Bu, farklı üst akış hatalarını uygulama düzeyinde tek bir hata türünde birleştirmek için gereklidir.

enum AppError: Error { case network }

apiClient.request()
    .mapError { _ in AppError.network }
    .sink(receiveCompletion: { _ in }, receiveValue: { _ in })
    .store(in: &cancellables)

mapError neden önemlidir

Yayıncıları birleştirdiğinizde Failure türleri eşleşmelidir. mapError, uyumsuz hataları normalleştirerek merge ve zip gibi işleçlerin derlenmesini ve sink işlecinizin tek bir hata türünü ele almasını sağlar.

setFailureType

Just gibi bazı yayıncıların Never hata türü vardır. setFailureType(to:), bunların hata üreten yayıncılarla birleştirilebilmesini sağlar.

Just(42)
    .setFailureType(to: AppError.self)
    .merge(with: failablePublisher)
    .sink(receiveCompletion: { _ in }, receiveValue: { _ in })
    .store(in: &cancellables)

Tamamlanmayı ele alma

sink içindeki tamamlama kapanışı, akışın tamamlanıp tamamlanmadığını veya başarısız olup olmadığını bildirir. Üst akışta kurtarılmamış hatalara tepki vermek için bunu inceleyin.

publisher.sink(
    receiveCompletion: { completion in
        if case .failure(let error) = completion {
            self.showAlert(error)
        }
    },
    receiveValue: { value in
        self.update(value)
    }
).store(in: &cancellables)

Dayanıklı işlem akışları tasarlama

Hata yönetimi için en iyi uygulamalar:

  • Geçici hatalar için retry kullanın
  • Geri dönüşler için catch veya replaceError kullanın
  • Hata türlerini birleştirmek için mapError kullanın
  • sink içinde başarısızlık durumunu her zaman ele alın

Hızlı kontrol

Hata yönetimi bilginizi sınayın.

Özet

Birleştirme'nin hata yönetimi işleçlerini öğrendiniz:

  • catch / replaceError — geri dönüşler sağlar
  • retry — başarısızlık durumunda yeniden dener
  • mapError / setFailureType — hata türlerini birleştirir

Bunlar birlikte, ilk hatada sonlanmak yerine hatayı zarifçe tolere eden işlem akışları oluşturmanızı sağlar.

Sıkça Sorulan Sorular

“Hata İşleme Operatörleri” dersi ücretsiz mi?

Evet — “Hata İşleme Operatörleri” 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 Swift Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Swift Academy kursu toplamda 4 dersten oluşur.

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

catch, retry ve replaceError ile kurtarma sağlayın. Swift 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.

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

Önceden deneyim gerekmez. CoddyKit'te Swift 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.

“Hata İşleme Operatörleri” 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 Swift Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Swift 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. Akışları Dönüştürme ve Birleştirme
  2. Zamanlayıcılar ve İş Parçacıkları
  3. Hata İşleme Operatörleri
  4. Özel Yayıncılar ve Aboneler
← Swift Academy Sayfasına Dön