Kotlin Academy · पाठ

कार्यात्मक त्रुटि प्रबंधन

मैप करें और पुनर्प्राप्त करें

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

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

डेटा-प्रवाह के रूप में त्रुटियाँ

कार्यात्मक त्रुटि-संभाल विफलताओं को ऐसे मानों की तरह देखता है जिन्हें आप सफल मानों की तरह रूपांतरित, श्रृंखलाबद्ध और पुनर्प्राप्त कर सकते हैं। अंतर्निर्मित Result ठीक इसी काम के लिए संचालक देता है।

map

map सफल मान को रूपांतरित करता है और failure को बिना बदले छोड़ देता है, इसलिए वह उसी रूप में आगे पहुँचता है।

fun main() {
    val r = Result.success(5).map { it * 2 }
    println(r.getOrNull())
    val f = Result.failure<Int>(Exception("x")).map { it * 2 }
    println(f.getOrNull())
}

mapCatching

यदि रूपांतरण स्वयं अपवाद फेंक सकता है, तो mapCatching उस अपवाद को बाहर निकलने देने के बजाय परिणाम में कैद कर लेता है।

fun main() {
    val r = Result.success("10").mapCatching { it.toInt() }
    println(r.getOrNull())
    val bad = Result.success("oops").mapCatching { it.toInt() }
    println(bad.isFailure)
}

recover

recover अपवाद से मान की गणना करके failure को फिर से success में बदल देता है। success बिना बदलाव के आगे बढ़ता है।

fun main() {
    val r = Result.failure<Int>(Exception("down")).recover { 0 }
    println(r.getOrNull())
    val ok = Result.success(7).recover { 0 }
    println(ok.getOrNull())
}

recoverCatching

जब पुनर्प्राप्ति का तर्क भी विफल हो सकता है, तब recoverCatching उस प्रयास को आवृत कर देता है और सब कुछ परिणाम के रूप में बनाए रखता है।

fun main() {
    val r = Result.failure<Int>(Exception()).recoverCatching {
        "5".toInt()
    }
    println(r.getOrNull())
}

onSuccess और onFailure

ये परिणाम में बदलाव किए बिना सहायक कार्रवाइयाँ करते हैं और आगे जोड़ने के लिए वही परिणाम लौटाते हैं। लॉग लिखने के लिए ये बहुत उपयोगी हैं।

fun main() {
    runCatching { "3".toInt() }
        .onSuccess { println("ok " + it) }
        .onFailure { println("fail " + it.message) }
        .also { println("done") }
}

कार्य-प्रवाह की कड़ियाँ जोड़ना

ऑपरेटर मिलकर एक सुव्यवस्थित कार्य-प्रवाह बनाते हैं: प्राप्त करना, रूपांतरित करना और पुनर्प्राप्त करना—वह भी नेस्टेड try/catch के बिना।

fun main() {
    val result = runCatching { "21".toInt() }
        .map { it * 2 }
        .recover { -1 }
        .getOrThrow()
    println(result)
}

अंतिम मान तक fold करना

fold से कार्य-प्रवाह समाप्त करके दोनों शाखाओं को एक ठोस मान में समेटें, जैसे उपयोगकर्ता को दिखाया जाने वाला संदेश।

fun main() {
    val msg = runCatching { "x".toInt() }
        .map { it + 1 }
        .fold(
            onSuccess = { "result: " + it },
            onFailure = { "failed: " + it.message }
        )
    println(msg)
}

स्वनिर्धारित प्रकार पर रूपांतरण लागू करना

map जैसे विस्तार फ़ंक्शन लिखकर आप अपने सीलबंद परिणाम प्रकार को भी इसी तरह आसानी से उपयोग कर सकते हैं।

sealed class Res<out T> {
    data class Ok<T>(val v: T) : Res<T>()
    data class Err(val msg: String) : Res<Nothing>()
}

fun <T, R> Res<T>.map(f: (T) -> R): Res<R> = when (this) {
    is Res.Ok -> Res.Ok(f(v))
    is Res.Err -> this
}

fun main() {
    val r = Res.Ok(4).map { it * 3 }
    println(r)
}

कार्यात्मक शैली क्यों

कार्यात्मक त्रुटि-प्रबंधन सफल मार्ग को पढ़ने योग्य रखता है, जबकि त्रुटियाँ घोषणात्मक ढंग से आगे बढ़ती रहती हैं। जगह-जगह try/catch नहीं लिखना पड़ता और प्रकार-प्रणाली शुरू से अंत तक विफलता पर नज़र रखती है।

सब कुछ एक साथ जोड़ना

अब आपके पास पूरा उपकरण-संग्रह है:

  • map / mapCatching से रूपांतरित करना
  • recover / recoverCatching से सुधार करना
  • onSuccess / onFailure से सहायक कार्रवाइयाँ करना
  • fold से अंतिम रूप देना

त्वरित जाँच

कार्यात्मक त्रुटि-प्रबंधन की अपनी समझ जाँचें।

पुनरावलोकन

आपने कार्यात्मक त्रुटि-प्रबंधन सीखा:

  • map / mapCatching से रूपांतरित करना
  • recover / recoverCatching से सुधार करना
  • onSuccess / onFailure से निरीक्षण करना
  • fold से अंतिम रूप देना

इससे Result और त्रुटि-मॉडलिंग का पाठ्यक्रम पूरा होता है।

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

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

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

पाठ्यक्रम
51
पाठ
203

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

क्या “कार्यात्मक त्रुटि प्रबंधन” पाठ निःशुल्क है?

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

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

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

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

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

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

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

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

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

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

  1. Result प्रकार
  2. runCatching
  3. सीलबंद Result पदानुक्रम
  4. कार्यात्मक त्रुटि प्रबंधन
← Kotlin Academy पर वापस जाएँ