Fish Shell:
एरर्स को हैंडल करना

कैसे करें:

Fish में एरर्स को पकड़ने के लिए, status कमांड और कंडीशनल्स पर निर्भर रहें। मान लीजिए ping विफल हो जाता है; यहाँ उसे पता लगाने का तरीका है:

ping -c 1 example.com
if not status is-success
    echo "पिंग के साथ कुछ मछली जैसा हुआ।"
end

अगर ping विफल होता है तो नमूना आउटपुट:

पिंग के साथ कुछ मछली जैसा हुआ।

एक विशिष्ट एरर कोड को संभालने के लिए, status --is का उपयोग करें:

false
if status --is 1
    echo "कोड 1 के साथ एक एरर पकड़ा गया।"
end

नमूना आउटपुट:

कोड 1 के साथ एक एरर पकड़ा गया।

एक अधिक मजबूत दृष्टिकोण के लिए, एक फंक्शन का उपयोग करने पे विचार करें:

function try_ping
    ping -c 1 example.com
    or begin
        echo "पिंग विफल हो गया स्थिति के साथ $status"
        return 1
    end
end

try_ping

गहराई से समझे

Fish में एरर हैंडलिंग, उच्च-स्तरीय भाषाओं में आपको ज्ञात try/catch पैराडाइम से मैच नहीं करती है। इसके बजाय, आपके पास status कमांड द्वारा प्रदान किए गए स्पष्ट एग्ज़िट स्टेटस होते हैं।

ऐतिहासिक रूप से, Unix जैसे सिस्टमों में, एग्ज़िट स्टेटस का 0 मतलब सफलता होता है, जबकि कोई भी गैर-शून्य मूल्य एक एरर को दर्शाता है, जो आमतौर पर विभिन्न विफलता कारणों को प्रतिबिंबित करता है। यह परंपरा अधिकांश कमांड-लाइन उपयोगिताओं द्वारा और तदनुसार, स्वयं Fish द्वारा इस्तेमाल की जाती है।

Fish में status जांच के विकल्प में अन्य शेल्स में trap के माध्यम से सिग्नल हैंडलिंग शामिल है, लेकिन Fish अधिक स्पष्ट स्टेटस जांच को पसंद करता है, क्योंकि यह साफ है और कम पक्ष प्रभावों का दावा करता है।

कार्यान्वयन के दृष्टिकोण से, Fish में एरर हैंडलिंग सरल रहती है फिर भी शक्तिशाली है, ज्यादातर इसकी अवरोधन-रहित प्रकृति और स्पष्ट सिंटैक्स पर जोर देने के कारण, जैसा कि उदाहरणों में दिखाया गया है। एरर कोड्स फंक्शनों के साथ अच्छी तरह से मिश्रित होते हैं, जो मोड्यूलर और पठनीय एरर प्रबंधन के लिए अनुमति देते हैं।

देखें भी