Ο χειρισμός σφαλμάτων είναι μία από τις συχνές λειτουργίες στον κύκλο ανάπτυξης λογισμικού. Είναι μια κρίσιμη πτυχή του καλού προγραμματισμού. Το Go ακολουθεί μια απλή και εύχρηστη προσέγγιση με τον ενσωματωμένο μηχανισμό διαχείρισης σφαλμάτων. Βασίζεται στην επιστροφή σφαλμάτων από συναρτήσεις και μεθόδους, επιτρέποντάς σας να εστιάσετε σε λειτουργικότητα κώδικα που είναι διαισθητική και ευανάγνωστη.
Διαχειρίζεστε ρητά τα σφάλματα στο Go, γεγονός που οδηγεί σε ένα σταθερό πλαίσιο για σχόλια, με τη δυνατότητα να εφαρμόζετε τη λογική επανάληψης με συνέπεια. ο Σφάλματα Το πακέτο παρέχει πρόσθετη λειτουργικότητα για τον χειρισμό σφαλμάτων.
Το πακέτο σφαλμάτων
Το πακέτο σφαλμάτων είναι ένα από τα πακέτα στην τυπική βιβλιοθήκη του Go. Το πακέτο παρέχει απλές αρχικές αρχές διαχείρισης σφαλμάτων και λειτουργίες για τη δημιουργία και τον χειρισμό σφαλμάτων με συνέπεια στον κώδικα Go.
Το πακέτο παρέχει το Νέος λειτουργία για τη δημιουργία σφαλμάτων με προσαρμοσμένα μηνύματα σφάλματος που μπορείτε να χρησιμοποιήσετε με τον ίδιο τρόπο όπως κάθε ενσωματωμένος τύπος σφάλματος, όπως το μηδέν και Λάθος μέθοδος του λάθος διεπαφή.
ο Σφάλματα Το πακέτο παρέχει επίσης λειτουργικότητα για σφάλματα αναδίπλωσης και ξετυλίγματος, μια μέθοδος για βεβαιώσεις τύπου σε σφάλματα.
Μπορείτε να εισάγετε το Σφάλματα πακέτο με τη λέξη-κλειδί εισαγωγής. Απλώς καθορίστε το όνομα του πακέτου στη λίστα εισαγωγών σας.
εισαγωγή"Σφάλματα"
Λήψη και χειρισμός σφαλμάτων στο Go
Η γνώση του βασικού χειρισμού σφαλμάτων στο Go θέτει τα θεμέλια για την κατανόηση του Σφάλματα πακέτο. Οι συναρτήσεις και οι μέθοδοι επιστρέφουν σφάλματα που συνοδεύονται από έναν πόρο.
Ακολουθεί ένα παράδειγμα διαχείρισης σφαλμάτων από μια λειτουργία ανοίγματος αρχείου με το ενσωματωμένο os πακέτο.
πακέτο κύριος
εισαγωγή (
"fmt"
"os"
)funcκύριος() {
αρχείο, err := os. Ανοιξε("filename.txt")αν λάθος!= μηδέν {
fmt. Println (λάθος)
}
// ...
}
ο Ανοιξε μέθοδος του os Το πακέτο είναι χρήσιμο όταν εργασία με αρχεία κειμένου στο Go. Ανοίγει ένα αρχείο, επιστρέφοντας ένα ανοιχτό παράδειγμα αρχείου και ένα λάθος.
Η τιμή σφάλματος μπορεί να είναι το μηδέν τύπου, υποδεικνύοντας ότι δεν υπάρχουν σφάλματα. Ωστόσο, μπορείτε να ελέγξετε για μη μηδενική περίπτωση και να χειριστείτε ένα σφάλμα εάν υπάρχει. Στην παραπάνω περίπτωση, το μπλοκ if εκτυπώνει το σφάλμα.
Μπορείτε να έχετε πρόσβαση στο Λάθος μέθοδος σφάλματος για την εξαγωγή περισσότερων πληροφοριών σχετικά με το σφάλμα (συνήθως περιγραφή).
αν λάθος!= μηδέν {
fmt. Println (λάθ. Λάθος())
}
Για παράδειγμα, εάν το αρχείο δεν υπάρχει, θα δείτε ένα μήνυμα σφάλματος που μοιάζει με αυτό:
Δημιουργία σφαλμάτων στο Go
Μπορείτε να δημιουργήσετε σφάλματα με το Νέος μέθοδος του Σφάλματα πακέτο. Αυτή η μέθοδος λαμβάνει ένα μήνυμα συμβολοσειράς και επιστρέφει τα σφάλματα που αντιμετωπίστηκαν.
εισαγωγή"Σφάλματα"
funcκύριος() {
err := λάθη. Νέος("κάτι πήγε στραβά")
αν λάθος!= μηδέν {
// Ο κώδικας διαχείρισης σφαλμάτων πηγαίνει εδώ
}
}
ο κύριος συνάρτηση δημιουργεί ένα νέο σφάλμα και χειρίζεται πιθανά σφάλματα από τη δημιουργία σφάλματος με ένα αν δήλωση.
Μπορείτε επίσης να ορίσετε προσαρμοσμένα σφάλματα στο Go. Η συμβατική μέθοδος χρησιμοποιεί μια δομή και μια συνάρτηση σφάλματος για την υλοποίηση της δομής με βάση τη λειτουργικότητα του σφάλματος.
πακέτο κύριος
εισαγωγή"fmt"
τύπος customError struct {
πληροφορίες σειρά
}funcκύριος() {
// παράδειγμα εγκατάστασης της δομής
err := customError{
πληροφορίες: "Κάτι πήγε στραβά!",
}
// έξοδος της παρουσίας της δομής
fmt. Println (λάθος)
}
ο customError struct είναι το σχέδιο για το σφάλμα, και το πληροφορίες Το πεδίο συμβολοσειράς θα περιέχει το μήνυμα σφάλματος.
Οι συναρτήσεις σφάλματος μπορούν να υλοποιήσουν το customError struct και επιστρέψτε μια συμβολοσειρά σφάλματος.
func(ce customError)Λάθος()σειρά {
ΕΠΙΣΤΡΟΦΗ fmt. Sprintf("Παρουσιάστηκε προσαρμοσμένο σφάλμα: %v", ce.info)
}
ο Λάθος μέθοδος του customError Η struct επιστρέφει μια συμβολοσειρά χρησιμοποιώντας τη μέθοδο μορφοποίησης Sprintf του πακέτου fmt.
Σφάλματα αναδίπλωσης και ξετυλίγματος στο Go
Μπορείτε να προσθέσετε περαιτέρω πληροφορίες σχετικά με τα συμφραζόμενα σε σφάλματα αναδιπλώνοντάς τα. Θα χρησιμοποιήσετε κατά κύριο λόγο τα τυλιγμένα σφάλματα για να δημιουργήσετε σαφή μηνύματα σφάλματος για ακρίβεια στον εντοπισμό σφαλμάτων.
Μπορείτε να χρησιμοποιήσετε το Errorf μέθοδος του fmt πακέτο που παρέχει λειτουργικότητα για τη μορφοποίηση μηνυμάτων σφάλματος για αναδίπλωση σφαλμάτων. ο Errorf Η μέθοδος παίρνει ένα ρήμα μορφοποίησης συμβολοσειράς και συμβολοσειράς και το σφάλμα και επιστρέφει το αναδιπλωμένο σφάλμα.
εισαγωγή (
"fmt"
"os"
)funcκύριος() {
_, err := os. Ανοιξε("filename.txt")
αν λάθος!= μηδέν {
wrappedErr := fmt. Σφάλμα ("Σφάλμα ανοίγματος αρχείου: %v", λάθος)
fmt. Println (wrappedErr)
}
}
ο κύριος η συνάρτηση ανοίγει ένα αρχείο με το os του πακέτου Ανοιξε μέθοδο και αναδιπλώνει το σφάλμα με τη μέθοδο Errorf του fmt πακέτο. Στη συνέχεια, εξάγει το αναδιπλωμένο σφάλμα στην κονσόλα.
Μπορείτε να ξετυλίξετε τα τυλιγμένα σφάλματα στα προγράμματά σας με το Ξεδιπλώνω μέθοδος του Σφάλματα πακέτο. ο Ξεδιπλώνω Η μέθοδος εισπράττει το σφάλμα αναδίπλωσης και επιστρέφει το σφάλμα χωρίς περιτύλιξη.
εισαγωγή (
"fmt"
"os"
"Σφάλματα"
)funcκύριος() {
_, err := os. Ανοιξε("filename.txt")
αν λάθος!= μηδέν {
wrappedErr := fmt. Σφάλμα ("Σφάλμα ανοίγματος αρχείου: %v", λάθος)
unwrappedErr := σφάλματα. Ξετύλιγμα (wrappedErr)
fmt. Println (unwrappedErr)
}
}
ο κύριος η συνάρτηση αναδιπλώνει ένα σφάλμα από μια λειτουργία ανοίγματος αρχείου και το ξετυλιγμένοςΕρρ μεταβλητή κρατά το σφάλμα unwrapped.
Καταγράψτε τις αναφορές σφαλμάτων σας με αυτά τα πακέτα καταγραφής τρίτων
Θα χρειαστεί να καταγράψετε ορισμένα σφάλματα για μεταγενέστερους ελέγχους, εντοπισμό σφαλμάτων και άλλες λειτουργίες κατά τη διαδικασία ανάπτυξης της εφαρμογής σας. Μπορείτε να χρησιμοποιήσετε το zap πακέτο από τα πακέτα Uber, Logrus, Zerolog και Log15 για γρήγορη, δομημένη καταγραφή.