Swift Academy · पाठ

त्रुटि सँभालने वाले ऑपरेटर

catch, retry और replaceError से समस्या से उबरिए।

पाठ 3, कुल 4 में से13 चरण

त्रुटि सँभालने वाले ऑपरेटर, CoddyKit पर Swift Academy का एक निःशुल्क पाठ है। यह 4 में से 3वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह Swift Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Swift Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

कम्बाइन में त्रुटियाँ

कम्बाइन के publisher में एक विफलता प्रकार होता है। जब कोई publisher विफल होता है, तो वह स्ट्रीम समाप्त कर देता है — इसके बाद कोई और मान नहीं भेजा जाता। मज़बूत पाइपलाइन बनाने के लिए आपको ऐसे ऑपरेटर चाहिए जो त्रुटियों को संभालें, बदलें या उनसे उबरें।

विफलता का प्रकार

हर publisher एक Output और एक Failure घोषित करता है। कोई पाइपलाइन तभी संकलित होती है जब त्रुटि के प्रकार एक-दूसरे से मेल खाते हों, इसलिए विफलताओं को बदलने वाले ऑपरेटर आम हैं।

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

catch

कैच किसी विफलता को बीच में पकड़ता है और विफल publisher की जगह एक नया publisher रख देता है। इससे किसी समस्या की स्थिति में आप वैकल्पिक मान दे सकते हैं।

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

replaceError

replaceError(with:) catch का सरल रूप है: यह किसी भी विफलता को एकल वैकल्पिक मान से बदल देता है और सफलता के साथ पूरा हो जाता है।

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

retry

retry(n) विफल होने पर अपस्ट्रीम से अधिकतम n बार फिर से subscribe करता है। यह अस्थायी नेटवर्क त्रुटियों के लिए आदर्श है।

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

retry और catch को संयोजित करना

एक सामान्य लचीला तरीका: कुछ बार retry करें, फिर सभी प्रयास विफल होने पर वैकल्पिक व्यवस्था के लिए catch का उपयोग करें।

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

mapError

mapError एक त्रुटि प्रकार को दूसरे में बदलता है। ऊपर से आने वाली विभिन्न विफलताओं को एकल ऐप-स्तरीय त्रुटि प्रकार में एकीकृत करने के लिए यह आवश्यक है।

enum AppError: Error { case network }

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

mapError क्यों महत्वपूर्ण है

जब आप प्रकाशकों को संयोजित करते हैं, तो उनके Failure प्रकारों का मेल खाना आवश्यक है। mapError असंगत त्रुटियों को सामान्य रूप देता है, ताकि merge और zip जैसे संचालक संकलित हो सकें और आपका sink एक ही त्रुटि प्रकार को संभाल सके।

setFailureType

कुछ प्रकाशकों, जैसे Just, का विफलता प्रकार Never होता है। setFailureType(to:) उन्हें जोड़ता है, ताकि वे विफल होने वाले प्रकाशकों के साथ संयोजित हो सकें।

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

पूर्णता संभालना

sink में, पूर्णता फ़ंक्शन आपको बताता है कि धारा पूरी हुई है या विफल हो गई है। ऊपर की प्रक्रिया में जिन त्रुटियों से उबरा नहीं जा सका, उन पर प्रतिक्रिया देने के लिए इसकी जाँच करें।

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

लचीली पाइपलाइनों की रूपरेखा बनाना

त्रुटि संभालने की सर्वोत्तम प्रथाएँ:

  • क्षणिक विफलताओं के लिए retry का उपयोग करें
  • वैकल्पिक व्यवस्थाओं के लिए catch या replaceError का उपयोग करें
  • त्रुटि प्रकारों को एकीकृत करने के लिए mapError का उपयोग करें
  • sink में विफलता की स्थिति को हमेशा संभालें

त्वरित जाँच

त्रुटि संभालने संबंधी अपनी जानकारी जाँचें।

पुनरावलोकन

आपने कंबाइन के त्रुटि-संभाल संचालक सीखे:

  • catch / replaceError — वैकल्पिक व्यवस्थाएँ प्रदान करते हैं
  • retry — विफलता पर फिर से प्रयास करता है
  • mapError / setFailureType — त्रुटि प्रकारों को एकीकृत करते हैं

साथ मिलकर, ये आपको ऐसी पाइपलाइन बनाने देते हैं जो पहली त्रुटि पर बंद होने के बजाय सहज रूप से सीमित क्षमता में काम करती रहें।

शुरुआत निःशुल्क

एआई शिक्षक के साथ Swift सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
122
पाठ
409

अक्सर पूछे जाने वाले प्रश्न

क्या “त्रुटि सँभालने वाले ऑपरेटर” पाठ निःशुल्क है?

हाँ — Swift Academy अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “त्रुटि सँभालने वाले ऑपरेटर” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। Swift Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“त्रुटि सँभालने वाले ऑपरेटर” में मैं क्या सीखूँगा?

catch, retry और replaceError से समस्या से उबरिए। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Swift Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या Swift Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Swift Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 3वाँ पाठ है।

“त्रुटि सँभालने वाले ऑपरेटर” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस Swift Academy पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर Swift Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. स्ट्रीम को रूपांतरित और संयोजित करना
  2. शेड्यूलर और थ्रेडिंग
  3. त्रुटि सँभालने वाले ऑपरेटर
  4. कस्टम पब्लिशर और सब्सक्राइबर
← Swift Academy पर वापस जाएँ