Junior — Middle
Ποια είναι η ανάγκη χρήσης της λειτουργίας recover μέσα σε defer στο Go;
sobes.tech AI
Απάντηση από AI
Στη γλώσσα Go, η λειτουργία recover χρησιμοποιείται για την ανίχνευση των panic και την αποτροπή απότομου τερματισμού του προγράμματος. Ωστόσο, η recover λειτουργεί μόνο αν καλείται μέσα σε μια καθυστέρηση (defer).
Η χρήση της recover μέσα σε defer επιτρέπει:
- Να χειριστείτε με ασφάλεια ένα
panic, π.χ., καταγράφοντας το σφάλμα ή καθαρίζοντας πόρους. - Να συνεχίσετε την εκτέλεση του προγράμματος μετά από ένα
panic, αν είναι δυνατό.
Παράδειγμα:
func safeFunction() {
defer func() {
if r := recover(); r != nil {
fmt.Println("Αντιμετωπίστηκε panic:", r)
}
}()
// Κώδικας που μπορεί να προκαλέσει panic
panic("κάτι πήγε στραβά")
}
Αν καλέσετε recover εκτός defer, δεν θα πιάσει το panic και το πρόγραμμα θα τερματίσει απότομα. Γι' αυτό, το recover πρέπει πάντα να τοποθετείται μέσα σε defer για σωστή διαχείριση καταστάσεων εξαιρέσεων.