त्रुटि संशोधन

Fiber कोड पथक और मध्यवर्ती चलाने के दौरान होने वाली सभी त्रुटियों को पकड़कर सुनिश्चित करना महत्वपूर्ण है। आपको उन्हें हैंडलर फ़ंक्शन को वापस भिजवाना होगा ताकि Fiber उन्हें पकड़ सके और प्रसंस्कृत कर सके।

  • उदाहरण
app.Get("/", func(c *fiber.Ctx) error {
    // त्रुटि को Fiber को भेजें
    return c.SendFile("file-does-not-exist")
})

डिफ़ॉल्ट रूप से, Fiber में पैनिक त्रुटियों का संभाल नहीं करता है। पाइलन योजना को क्रैश करने से बचने के लिए आपको नीचे दिखाए गए रूप में Recover मध्यवर्ती शामिल करना होगा।

  • उदाहरण
package main

import (
    "log"

    "github.com/gofiber/fiber/v2"
    "github.com/gofiber/fiber/v2/middleware/recover"
)

func main() {
    app := fiber.New()
	
	// पैनिक त्रुटियों को पकड़ने के लिए मध्यवर्ती का उपयोग करें
    app.Use(recover.New())

    app.Get("/", func(c *fiber.Ctx) error {
        panic("यह पैनिक फाइबर द्वारा पकड़ा गया है")
    })

    log.Fatal(app.Listen(":3000"))
}

आप fiber.NewError() के साथ Fiber की कस्टम त्रुटि संरुपण का उपयोग कर सकते हैं ताकि अतिरिक्त स्थिति कोड को भेज सकें। संदेश भेजना वैकल्पिक है; अगर छोड़ दिया जाता है, तो यह अतिरिक्त स्थिति कोड संदेश पर डिफ़ॉल्ट कर देगा (जैसे, 404 बराबर नहीं मिला)

  • उदाहरण
app.Get("/", func(c *fiber.Ctx) error {
    // 503 सेवा अनुपलब्ध
    return fiber.ErrServiceUnavailable

    // 503 अवकाश पर है!
    return fiber.NewError(fiber.StatusServiceUnavailable, "अवकाश पर है!")
})

डिफ़ॉल्ट त्रुटि हैंडलर

Fiber एक डिफ़ॉल्ट त्रुटि हैंडलर प्रदान करता है। मानक त्रुटियों के लिए, प्रतिक्रिया को 500 आंतरिक सर्वर त्रुटि के रूप में भेजा जाएगा। यदि त्रुटि प्रकार fiber.Error है, तो प्रतिक्रिया को प्रदान किए गए स्थिति कोड और संदेश का उपयोग करके भेजा जाएगा।

  • उदाहरण
// डिफ़ॉल्ट त्रुटि हैंडलर
var DefaultErrorHandler = func(c *fiber.Ctx, err error) error {
    // डिफ़ॉल्ट स्थिति कोड 500 है
    code := fiber.StatusInternalServerError

    // अगर यह *fiber.Error है, तो कस्टम स्थिति कोड प्राप्त करें
    var e *fiber.Error
    if errors.As(err, &e) {
        code = e.Code
    }

    // सेट करें सामग्री-प्रकार: text/plain; charset=utf-8
    c.Set(fiber.HeaderContentType, fiber.MIMETextPlainCharsetUTF8)

    // स्थिति कोड और त्रुटि संदेश भेजें
    return c.Status(code).SendString(err.Error())
}

कस्टम त्रुटि हैंडलर

आप संरुपित कॉन्फ़िगरेशन का उपयोग करके Fibre विभाग को प्रारंभ करते समय एक कस्टम त्रुटि हैंडलर सेट कर सकते हैं।

अधिकांश मामलों में, डिफ़ॉल्ट त्रुटि हैंडलर पर्याप्त होना चाहिए। हालांकि, अगर आप विभिन्न प्रकार की त्रुटियों को पकड़ना चाहते हैं और उसके लिए उचित कार्रवाई लेना चाहते हैं, जैसे सूचना ईमेल भेजना या त्रुटियों को केंद्रीय प्रणाली में लॉग करना, तो एक कस्टम त्रुटि हैंडलर बहुत उपयोगी होगा। आप ग्राहक को कस्टम प्रतिक्रियाएँ भी भेज सकते हैं, जैसे त्रुटि पृष्ठ या केवल एक JSON प्रतिक्रिया।

निम्नलिखित उदाहरण दिखाता है कि विभिन्न प्रकार की त्रुटियों के लिए त्रुटि पृष्ठ कैसे प्रदर्शित करें।

  • उदाहरण
// सानिद्ध्य विभाजी के साथ एक नया फाइबर उदाहरण बनाएँ
app := fiber.New(fiber.Config{
    // डिफ़ॉल्ट त्रुटि हैंडलर को ओवरराइड करें
    ErrorHandler: func(ctx *fiber.Ctx, err error) error {
        // डिफ़ॉल्ट स्थिति कोड 500 है
        code := fiber.StatusInternalServerError

        // अगर यह *fiber.Error है, तो कस्टम स्थिति कोड प्राप्त करें
        var e *fiber.Error
        if errors.As(err, &e) {
            code = e.Code
        }

        // कस्टम त्रुटि पृष्ठ भेजें
        err = ctx.Status(code).SendFile(fmt.Sprintf("./%d.html", code))
        if err != nil {
            // यदि SendFile विफल हो जाता है
            return ctx.Status(fiber.StatusInternalServerError).SendString("आंतरिक सर्वर त्रुटि")
        }

        // हैंडलर से वापस लौटें
        return nil
    },
})

// ...