"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > यदि कोई गो फ़ंक्शन घबरा जाए तो त्रुटि कैसे लौटाएं?

यदि कोई गो फ़ंक्शन घबरा जाए तो त्रुटि कैसे लौटाएं?

2024-11-18 को प्रकाशित
ब्राउज़ करें:569

How to Return an Error if a Go Function Panics?

डेफ़र इन गो से लौट रहे हैं

आप एक समस्या का सामना कर रहे हैं जहां आप एक त्रुटि वापस करना चाहते हैं यदि कोई फ़ंक्शन गो में घबरा जाता है। यहां आपके कोड का विश्लेषण और समाधान दिया गया है:

func getReport(filename string) (rep report, err error) {
    rep.data = make(map[string]float64)

    defer func() {
        if r := recover(); r != nil {
            fmt.Println("Recovered in f", r)
            switch x := r.(type) {
            case string:
                err = errors.New(x)
            case error:
                err = x
            default:
                err = errors.New("Unknown panic")
            }
            rep = nil // Invalidate rep
        }
    }()
    panic("Report format not recognized.")
    // rest of the getReport function...
}

डिफ़र: एक डिफ़र स्टेटमेंट किसी फ़ंक्शन के निष्पादन में आसपास के फ़ंक्शन तक देरी करता है निकास।

  • कोड में संशोधन:
  • डिफर फ़ंक्शन अब पुनर्प्राप्त मूल्य को सही ढंग से संभालने के लिए स्विच-केस स्टेटमेंट का उपयोग करता है।
  • यदि पुनर्प्राप्त मान एक स्ट्रिंग है, तो इसे त्रुटियों का उपयोग करके त्रुटि में परिवर्तित कर दिया जाता है। नया()।

प्रतिनिधि चर एक त्रुटि के बाद अमान्य हो जाता है यह सुनिश्चित करने के लिए मुठभेड़ करें कि यह कोई डेटा नहीं लौटाता है। यदि आपका getReport फ़ंक्शन किसी अमान्य रिपोर्ट प्रारूप के कारण घबराता है तो वह एक त्रुटि लौटाएगा। त्रुटि संदेश या तो पैनिक वैल्यू होगा (यदि कोई स्ट्रिंग है) या एक अज्ञात पैनिक का संकेत देने वाली सामान्य त्रुटि होगी।

नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3