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 में एरर हैंडलिंग सरल रहती है फिर भी शक्तिशाली है, ज्यादातर इसकी अवरोधन-रहित प्रकृति और स्पष्ट सिंटैक्स पर जोर देने के कारण, जैसा कि उदाहरणों में दिखाया गया है। एरर कोड्स फंक्शनों के साथ अच्छी तरह से मिश्रित होते हैं, जो मोड्यूलर और पठनीय एरर प्रबंधन के लिए अनुमति देते हैं।
देखें भी
- Fish दस्तावेज़ पर कंडिशनल्स: https://fishshell.com/docs/current/language.html#conditionals
- Fish ट्यूटोरियल पर एरर हैंडलिंग: https://fishshell.com/docs/current/tutorial.html#error-handling