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 το πιάνει και το πρόγραμμα συνεχίζει να λειτουργεί χωρίς να τερματίσει.