Translate

Understanding the Meaning of "GO" in Hindi | Go in Hindi

Understanding the Meaning of "GO" in Hindi ➡ Hello and Welcome to All Our Visitors from around the world! We’re excited to hav...

Recover in golang

What is recover in Go?

recover Go में एक built-in function है जिसका उपयोग panic के बाद program execution को control में लाने के लिए किया जाता है। जब कोई panic होती है, तो program normally crash हो जाता है, लेकिन अगर आप recover function का उपयोग करते हैं, तो आप उस panic से recover कर सकते हैं और program को बिना crash हुए continue रख सकते हैं। recover function केवल उस context में useful होता है जहां से panic raised हुई हो, यानी कि defer की गई functions में।

Basic Usage of recover

recover को आमतौर पर defer के साथ use किया जाता है। जब कोई function panic करता है, तो recover उस panic की value को capture कर लेता है और program को crash होने से रोकता है।

Example: Using recover to Handle Panic

package main

import "fmt"

func main() {
    defer func() {
        if r := recover(); r != nil {
            fmt.Println("Recovered from panic:", r)
        }
    }()

    fmt.Println("Start of the program")

    // Inducing a panic
    panic("A severe error occurred!")

    fmt.Println("This line will not be executed")
}

Explanation:

  • defer func() { ... }(): यह deferred function recover को call करता है। अगर कोई panic होती है, तो recover उस panic की value को capture करता है।
  • recover(): यह function panic से raised value को return करता है। अगर कोई panic हुई हो, तो recover उसे handle करता है और program को terminate होने से बचाता है।
  • fmt.Println("Recovered from panic:", r): यह statement panic की value को print करता है और program execution को control में लाने का काम करता है।

How recover Works

  • recover function सिर्फ उसी function में useful होता है जिसे deferred किया गया हो। अगर आप recover को किसी ऐसी function में call करते हैं जिसे defer नहीं किया गया है, तो यह simply nil return करेगा और कोई effect नहीं डालेगा।
  • अगर panic होती है, तो Go runtime पहले सभी deferred functions को execute करता है। अगर किसी deferred function में recover call होती है, तो वो panic से recover कर सकता है और program execution को normal mode में वापस ला सकता है।

Example: Recovering from Panic in a Nested Function

package main

import "fmt"

func main() {
    fmt.Println("Start of the main function")

    // Calling a function that causes panic
    safeDivision(4, 0)

    fmt.Println("End of the main function")
}

func safeDivision(a, b int) {
    defer func() {
        if r := recover(); r != nil {
            fmt.Println("Recovered in safeDivision:", r)
        }
    }()

    fmt.Println("Result:", a/b)
}

Explanation:

  • safeDivision(4, 0): यहां division by zero attempt किया गया है, जो panic trigger करता है।
  • recover(): जब panic होती है, तो recover function इसे capture करता है और इसे handle करता है। इससे program को crash होने से रोका जाता है।
  • fmt.Println("Recovered in safeDivision:", r): यह recovered panic message को print करता है।

When to Use recover

  • Graceful Recovery: recover का इस्तेमाल तब किया जाता है जब आप चाहते हैं कि program कुछ unexpected situations के बाद भी gracefully recover कर सके।
  • Library Functions: अगर आप libraries लिख रहे हैं, तो recover का इस्तेमाल करके आप अपने users के program को panic के कारण crash होने से बचा सकते हैं।
  • Critical Cleanup: जब आपको critical resources को release करना हो, जैसे file handles या network connections, तब आप recover का इस्तेमाल करके cleanup operations को ensure कर सकते हैं।

When Not to Use recover

  • Normal Error Handling: recover का इस्तेमाल normal error handling के लिए नहीं करना चाहिए। Normal errors को handle करने के लिए traditional error handling (i.e., returning errors) का इस्तेमाल करना चाहिए।
  • Overuse: recover का overuse नहीं होना चाहिए, क्योंकि इससे debugging और program flow को समझना मुश्किल हो सकता है।

Summary

  • recover: Go में built-in function है जिसका उपयोग panic से recover करने के लिए किया जाता है।
  • Usage with defer: recover function का इस्तेमाल हमेशा deferred functions में किया जाता है ताकि panic होने पर उसे handle किया जा सके।
  • Graceful Recovery: recover program को panic से recover करके execution को control में लाने में मदद करता है।
  • Use Cases: Critical cleanup, library functions में panic handling, और ऐसी situations में जहां program को gracefully recover करना जरूरी हो।

No comments: