Sobes.tech
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 για σωστή διαχείριση καταστάσεων εξαιρέσεων.