Sobes.tech
Junior — Middle

Εξηγήστε τον μηχανισμό αλληλεπίδρασης των λειτουργιών panic, defer και recover στη γλώσσα προγραμματισμού Go.

sobes.tech AI

Απάντηση από AI

Στη γλώσσα Go, οι συναρτήσεις panic, defer και recover σχετίζονται με τη διαχείριση σφαλμάτων και καταστάσεων εξαιρέσεων.

  • Το panic — προκαλεί απότομο τερματισμό της τρέχουσας συνάρτησης και ξεκινά τη διαδικασία "πανικού", η οποία διαχέεται στην στοίβα κλήσεων, καλώντας τις καθυστερημένες συναρτήσεις defer.
  • Το defer — αναβάλλει την εκτέλεση μιας συνάρτησης μέχρι να εξέλθει η τρέχουσα συνάρτηση, επιτρέποντας τον καθαρισμό ή την επεξεργασία μετά από ένα panic.
  • Το recover — επιτρέπει το "πιάσιμο" ενός panic μέσα σε μια καθυστερημένη συνάρτηση και την αποτροπή τερματισμού του προγράμματος.

Παράδειγμα:

func παράδειγμα() {
    defer func() {
        if r := recover(); r != nil {
            fmt.Println("Ανάκτησε από panic:", r)
        }
    }()

    fmt.Println("Πριν από το panic")
    panic("κάτι πήγε στραβά")
    fmt.Println("Αυτό δεν θα εκτελεστεί")
}

Εδώ, το panic προκαλεί σφάλμα, το defer με το recover το πιάνει και το πρόγραμμα συνεχίζει να λειτουργεί χωρίς να τερματίσει.