गो में त्रुटिपूर्ण रिटर्न मानों के साथ स्थगित कार्यों को संभालना
gometalinter और errcheck एक चेतावनी जारी करते हैं जब एक फ़ंक्शन जो एक चर लौटाता है उसे बिना स्थगित किए इसकी लौटाई गई त्रुटि की जाँच करना। इससे अनियंत्रित त्रुटियां और संभावित रनटाइम समस्याएं हो सकती हैं।
इस परिदृश्य को संभालने का मुहावरा स्वयं फ़ंक्शन को स्थगित करना नहीं है, बल्कि इसे किसी अन्य फ़ंक्शन में लपेटना है जो लौटाए गए मान की जांच करता है। यहाँ एक उदाहरण है:
defer func() {
if err := r.Body.Close(); err != nil {
// Handle the error
}
}()
एक अज्ञात फ़ंक्शन का उपयोग करके, आप स्थगित फ़ंक्शन के रिटर्न मान को कैप्चर कर सकते हैं और होने वाली किसी भी त्रुटि को संभाल सकते हैं।
वैकल्पिक रूप से, आप प्रक्रिया को सरल बनाने के लिए एक सहायक फ़ंक्शन बना सकते हैं :
func Check(f func() error) {
if err := f(); err != nil {
// Handle the error
}
}
इस सहायक फ़ंक्शन का उपयोग कई कार्यों को स्थगित करने के लिए किया जा सकता है, यह सुनिश्चित करते हुए कि उनके रिटर्न मान जांचे गए हैं:
defer Check(r.Body.Close)
defer Check(SomeOtherFunc)
आप कई कार्यों को स्वीकार करने के लिए सहायक फ़ंक्शन का विस्तार भी कर सकते हैं:
func Checks(fs ...func() error) {
for i := len(fs) - 1; i >= 0; i-- {
if err := fs[i](); err != nil {
// Handle the error
}
}
}
यह आपको कई कार्यों को स्थगित करने और उनकी त्रुटियों को अधिक संक्षिप्त और व्यवस्थित तरीके से संभालने की अनुमति देता है:
defer Checks(r.Body.Close, SomeOtherFunc)
यह सुनिश्चित करने के लिए कि त्रुटियों को सही क्रम में नियंत्रित किया जाता है, चेक() फ़ंक्शन फ़ंक्शन को उनकी घोषणा के विपरीत क्रम में निष्पादित करने के लिए एक डाउनवर्ड लूप का उपयोग करता है। यह स्थगित कार्यों के निष्पादन क्रम के साथ संरेखित होता है, जहां अंतिम स्थगित फ़ंक्शन पहले निष्पादित होता है।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3