Go के लिए errors लाइब्रेरी: बेहतर एरर हैंडलिंग की पूरी गाइड
1. यह क्या है और क्यों ज़रूरी है
errors लाइब्रेरी Go भाषा का एक स्टैंडर्ड पैकेज है, जो एरर बनाने, फ़ॉर्मेट करने और हैंडल करने के लिए बुनियादी फ़ंक्शन प्रदान करता है। कई अन्य भाषाओं के विपरीत, जहाँ exceptions एरर हैंडलिंग का मुख्य तंत्र है, Go फ़ंक्शन से एरर वैल्यू को स्पष्ट रूप से लौटाने का उपयोग करता है। यह प्रोग्राम के फ़्लो को अधिक अनुमानित और नियंत्रित बनाता है।
इस लाइब्रेरी का मुख्य काम नई एरर बनाने, उनके प्रकारों की तुलना करने और संदर्भ जानकारी जोड़ने (जैसे, एरर को "लपेटना") का एक सरल और प्रभावी तरीका प्रदान करना है। Go में, एरर सिर्फ एक error इंटरफ़ेस है, जिसे Error() string मेथड वाला कोई भी टाइप इम्प्लीमेंट कर सकता है। यह बहुत लचीलापन देता है: आप अतिरिक्त फ़ील्ड (एरर कोड, रिक्वेस्ट डेटा, आदि) के साथ अपने खुद के एरर टाइप बना सकते हैं।
यह क्यों ज़रूरी है? इसके बिना एक विश्वसनीय Go एप्लिकेशन लिखना असंभव है। जब भी कोई फ़ंक्शन विफल हो सकता है (फ़ाइलों, नेटवर्क, डेटाबेस के साथ काम करना), वह एक एरर लौटाता है। एरर को अनदेखा करना (उन्हें _ वेरिएबल में असाइन करना) एक बुरी प्रैक्टिस मानी जाती है। errors लाइब्रेरी न केवल यह बताने की अनुमति देती है कि क्या गलत हुआ, बल्कि एरर की एक चेन बनाने की भी अनुमति देती है, ताकि डीबगिंग के समय आपको पता चल सके कि किस स्टेज पर खराबी आई।
2. इंस्टॉलेशन
errors पैकेज Go की स्टैंडर्ड लाइब्रेरी का हिस्सा है। इसका मतलब है कि किसी अतिरिक्त इंस्टॉलेशन की आवश्यकता नहीं है। कोई भी Go SDK इंस्टॉल करने पर यह "बॉक्स से बाहर" उपलब्ध होता है। इसका उपयोग करने के लिए, बस इसे अपने कोड में इम्पोर्ट करें:
import "errors"
यदि आप Go Modules (Go 1.11+ के बाद से यह स्टैंडर्ड है) का उपयोग कर रहे हैं, तो पैकेज स्वचालित रूप से उपलब्ध होगा। स्टैंडर्ड लाइब्रेरी के लिए go get कमांड चलाने की कोई ज़रूरत नहीं है।
महत्वपूर्ण: एक लोकप्रिय थर्ड-पार्टी लाइब्रेरी github.com/pkg/errors भी है, जो विस्तारित कार्यक्षमता (कॉल स्टैक, फ़ॉर्मेटिंग) प्रदान करती है। हालाँकि, इस लेख में हम केवल स्टैंडर्ड errors पैकेज पर ध्यान केंद्रित कर रहे हैं, जो Go में किसी भी एरर हैंडलिंग का आधार है।
3. त्वरित शुरुआत
एरर बनाने और हैंडल करने का एक न्यूनतम कार्यशील उदाहरण:
package main
import (
"errors"
"fmt"
)
// एक फ़ंक्शन जो दो संख्याओं को विभाजित करता है। यदि भाजक शून्य है, तो यह एक एरर लौटाता है।
func divide(a, b float64) (float64, error) {
if b == 0 {
return 0, errors.New("शून्य से विभाजन संभव नहीं है")
}
return a / b, nil
}
func main() {
result, err := divide(10, 2)
if err != nil {
fmt.Println("एरर:", err)
} else {
fmt.Println("परिणाम:", result)
}
// एरर के साथ प्रयास करें
result2, err2 := divide(10, 0)
if err2 != nil {
fmt.Println("एरर:", err2) // आउटपुट: एरर: शून्य से विभाजन संभव नहीं है
} else {
fmt.Println("परिणाम:", result2)
}
}
इस उदाहरण में, हमने errors.New() का उपयोग करके एक सरल एरर बनाई और मानक तरीके if err != nil से इसकी उपस्थिति की जाँच की।
4. मुख्य फ़ंक्शन और मेथड
नीचे errors पैकेज के 8 प्रमुख फ़ंक्शन/मेथड विस्तृत विवरण और उदाहरणों के साथ दिए गए हैं।
4.1 errors.New(text string) error
सिग्नेचर: func New(text string) error
यह क्या करता है: दिए गए टेक्स्ट के साथ एक नई एरर बनाता है।