Πώς να χειριστείτε τα σφάλματα στο Golang;

Pos Na Cheiristeite Ta Sphalmata Sto Golang



Η Go είναι μια δημοφιλής γλώσσα προγραμματισμού που έχει αυξηθεί σε δημοτικότητα λόγω της αποτελεσματικότητας, της ταχύτητας και της αποδοτικότητάς της. Ωστόσο, λάθη μπορεί να συμβούν κατά τη διάρκεια των φάσεων ανάπτυξης και εκτέλεσης, όπως και σε οποιαδήποτε άλλη γλώσσα προγραμματισμού. Ο αποτελεσματικός χειρισμός των σφαλμάτων είναι απαραίτητος για τη διασφάλιση της αξιοπιστίας και της σταθερότητας των προγραμμάτων Go σας.

Αυτό το άρθρο θα εξετάσει διάφορες μεθόδους και προτεινόμενες διαδικασίες για τη διαχείριση σφαλμάτων στο Go.







Χειριστείτε λάθη στο Golang

Στο Go, μπορείς χειριστεί τα λάθη μέσω των μεθόδων που αναφέρονται παρακάτω:



1: Λειτουργία New().

Η γλώσσα Go παρέχει το Νέος() λειτουργία διαχείρισης σφαλμάτων. Αυτή η λειτουργία, διαθέσιμη στο ενσωματωμένο πακέτο σφαλμάτων, επιτρέπει στους προγραμματιστές να δημιουργούν προσαρμοσμένα μηνύματα σφάλματος για τα προγράμματά τους. Με τη χρήση του Νέος() λειτουργία, οι προγραμματιστές μπορούν να χειριστούν τα σφάλματα αποτελεσματικά και να παρέχουν ουσιαστικά μηνύματα σφάλματος στους χρήστες.



κύριο πακέτο

εισαγωγή 'Σφάλματα'
εισαγωγή 'fmt'

έλεγχος λειτουργίας ( συμβολοσειρά ονόματος ) λάθος {
nΣφάλμα := σφάλματα.Νέο ( 'Μη έγκυρο όνομα' )
αν όνομα ! = 'Linux' {
ΕΠΙΣΤΡΟΦΗ nΣφάλμα
}
ΕΠΙΣΤΡΟΦΗ μηδέν
}
func main ( ) {
όνομα := 'Linux'
err := έλεγχος ( όνομα )
αν πλανώμαι ! = μηδέν {
fmt.Println ( πλανώμαι )
} αλλού {
fmt.Println ( 'Έγκυρο όνομα' )
}
}





Ο παραπάνω κώδικας χρησιμοποιεί το Νέος() checkName λειτουργία για να δείτε αν η συμβολοσειρά Linux ταιριάζει με το όνομα που δίνεται. Η συνάρτηση παράγει ένα σφάλμα με το μήνυμα Μη έγκυρο όνομα αν το όνομα δεν είναι Linux . Η συνάρτηση επιστρέφει μηδέν για να δείξει ότι δεν υπήρξε σφάλμα εάν το όνομα είναι ίσο με Linux .

Η μεταβλητή ονόματος έχει οριστεί σε Linux στην κλήση της κύριας λειτουργίας στο checkName συνάρτηση, η οποία παίρνει επίσης τη μεταβλητή ονόματος ως όρισμα. Η κύρια λειτουργία εκτυπώνει το μήνυμα σφάλματος εάν το checkName η συνάρτηση επιστρέφει ένα σφάλμα. Η κύρια λειτουργία εκτυπώνει το Έγκυρο Όνομα αν το checkName η συνάρτηση επιστρέφει μηδέν.



Παραγωγή

2: Συνάρτηση Errorf().

ο Σφάλμα () Η λειτουργία στο Go μας επιτρέπει να χειριζόμαστε και σφάλματα. Σφάλμα () μας δίνει τη δυνατότητα να μορφοποιήσουμε το μήνυμα σφάλματος. Με την εισαγωγή του πακέτου fmt, οι προγραμματιστές μπορούν να το χρησιμοποιήσουν για να προσαρμόσουν τα μηνύματα σφάλματος ανάλογα με τις ανάγκες τους. Σφάλμα () απλοποιεί και βελτιώνει την αποτελεσματικότητα της διαχείρισης και της μετάδοσης σφαλμάτων στο Go.

κύριο πακέτο
εισαγωγή 'fmt'

func div ( n1, n2 εσύ ) λάθος {

αν n2 == 0 {
ΕΠΙΣΤΡΟΦΗ fmt.Σφάλμα ( '%d / %d \n Δεν μπορώ να διαιρέσω έναν αριθμό με το μηδέν' , n1, n2 )
}
ΕΠΙΣΤΡΟΦΗ μηδέν
}
func main ( ) {
err := div ( 42 , 0 )
αν πλανώμαι ! = μηδέν {
fmt.Εκτύπωση ( 'Σφάλματα' , λάθος )
} αλλού {
fmt.Println ( 'Έγκυρο τμήμα' )
}
}

Στον παραπάνω κώδικα, το div Η συνάρτηση δέχεται δύο ακέραιες εισόδους, n1 και n2, και αν το n2 είναι μηδέν, παράγει σφάλμα. Η συνάρτηση παράγει ένα σφάλμα με ένα μήνυμα που περιέχει τις τιμές n1 και n2 εάν το n2 είναι μηδέν. Η συνάρτηση επιστρέφει μηδέν για να δείξει ότι δεν υπήρξε σφάλμα εάν το n2 δεν είναι μηδέν.

Το σφάλμα που επιστρέφει το div αποθηκεύονται στη μεταβλητή err όταν η κύρια συνάρτηση εκτελείται div με τις τιμές 42 και 0. Η κύρια συνάρτηση χρησιμοποιεί το fmt.Printf για να εμφανίσει το μήνυμα σφάλματος εάν η συνάρτηση div εμφανίσει σφάλμα. Η κύρια λειτουργία εκτυπώνει Έγκυρο τμήμα εάν η συνάρτηση div επιστρέφει μηδέν.

Παραγωγή

3: Σαφής χειρισμός σφαλμάτων

Το Go ενθαρρύνει τη ρητή διαχείριση σφαλμάτων σε σύγκριση με άλλες γλώσσες προγραμματισμού, οι οποίες συχνά βασίζονται σε εξαιρέσεις. Αυτή η προσέγγιση ενθαρρύνει τους προγραμματιστές να χρησιμοποιούν τις δηλώσεις if για να ελέγχουν ρητά για σφάλματα, αντί να βασίζονται σε μπλοκ try-catch. Με αυτόν τον τρόπο, τα σφάλματα είναι πιο πιθανό να βρεθούν και να διορθωθούν σωστά. Για να διευκολυνθεί αυτό, το Go παρέχει το αν εσφαλμένα != μηδέν δήλωση, η οποία επιτρέπει στους προγραμματιστές να ελέγχουν για σφάλματα μετά την εκτέλεση μιας συνάρτησης και να προβαίνουν στις κατάλληλες ενέργειες με βάση το αποτέλεσμα. Με τη ρητή διαχείριση σφαλμάτων, το Go προσφέρει μια πιο δομημένη και αξιόπιστη προσέγγιση στη διαχείριση σφαλμάτων.

κύριο πακέτο
εισαγωγή 'fmt'

διαίρεση λειτουργιών ( α, β float64 ) ( float64, σφάλμα ) {
αν β == 0 {
ΕΠΙΣΤΡΟΦΗ 0 , fmt.Errorf ( 'Δεν μπορώ να διαιρέσω με το μηδέν' )
}
ΕΠΙΣΤΡΟΦΗ ένα / β, μηδέν
}
func main ( ) {
αποτέλεσμα, err := διαίρεση ( 13 , 3 )
αν πλανώμαι ! = μηδέν {
fmt.Εκτύπωση ( 'Σφάλμα: %v \n ' , λάθος )
} αλλού {
fmt.Εκτύπωση ( 'Αποτέλεσμα: %f \n ' , αποτέλεσμα )
}
αποτέλεσμα, err = διαιρώ ( 23 , 0 )
αν πλανώμαι ! = μηδέν {
fmt.Εκτύπωση ( 'Σφάλμα: %v \n ' , λάθος )
} αλλού {
fmt.Εκτύπωση ( 'Αποτέλεσμα: %f \n ' , αποτέλεσμα )
}
}

Σε αυτήν την εικόνα, η συνάρτηση διαίρεσης χρησιμοποιείται για τη διαίρεση δύο τιμών. Η έξοδος είναι το αποτέλεσμα αυτής της πράξης. Εάν ο δεύτερος αριθμός είναι 0, η συνάρτηση παράγει ένα σφάλμα με ένα διακριτό μήνυμα σφάλματος.

Η διαίρεση καλείται δύο φορές στην κύρια συνάρτηση: μία με έγκυρες εισόδους και μία με μη έγκυρη είσοδο. Το, αν err != μηδέν Η δήλωση χρησιμοποιείται για να προσδιορίσει εάν έλαβε χώρα ένα σφάλμα κάθε φορά που χρησιμοποιείται η συνάρτηση διαίρεσης. Αν παρουσιαστεί ένα μήνυμα σφάλματος. Εάν όχι, το αποτέλεσμα εκτυπώνεται.

Παραγωγή

4: Αναβολή, Πανικός και Ανάκτηση

Το Golang παρέχει επίσης το αναβάλλω δήλωση, η οποία χρησιμοποιείται για την εκτέλεση μιας συνάρτησης μετά την ολοκλήρωση ενός προγράμματος ή ενός συγκεκριμένου μπλοκ κώδικα. ο αναβάλλω Η δήλωση χρησιμοποιείται συχνά σε συνδυασμό με το αναρρώνω λειτουργία εντοπισμού και ανάκτησης από σφάλματα πανικού χρόνου εκτέλεσης. Όταν παρουσιάζεται σφάλμα πανικού χρόνου εκτέλεσης, το αναρρώνω Η συνάρτηση χρησιμοποιείται για την ανάκτηση από την κατάσταση σφάλματος και την αποτροπή της κατάρρευσης του προγράμματος. Αυτό είναι χρήσιμο για εργασίες καθαρισμού όπως το κλείσιμο αρχείων, το κλείσιμο των συνδέσεων δικτύου ή η αποδέσμευση πόρων. Αναβάλλοντας αυτές τις εργασίες, διασφαλίζετε ότι εκτελούνται ακόμη και αν παρουσιαστεί κάποιο σφάλμα.

ο πανικός χρησιμοποιείται για να σταματήσει την κανονική εκτέλεση του προγράμματος όταν παρουσιαστεί ένα απροσδόκητο σφάλμα, ενώ αναρρώνω χρησιμοποιείται για να χειριστεί τον πανικό και να συνεχίσει την εκτέλεση του προγράμματος.

κύριο πακέτο

εισαγωγή 'fmt'

func recoverFromPanic ( ) {
αν r := ανάκτηση ( ) ; r ! = μηδέν {
fmt.Println ( 'Ανάκρωσα από τον πανικό:' , r )
}
}
διαίρεση λειτουργιών ( x,y float64 ) float64 {
αναβολή ανάκτησης από τον Πανικό ( )

αν και == 0 {
πανικός ( 'Δεν μπορώ να διαιρέσω με το μηδέν' )
}
ΕΠΙΣΤΡΟΦΗ Χ / και
}
func main ( ) {
fmt.Println ( διαιρέστε ( 13 , 3 ) )
fmt.Println ( διαιρέστε ( 23 , 0 ) )
}

Στον παραπάνω κώδικα, η συνάρτηση διαίρεσης χρησιμοποιείται για τη διαίρεση δύο τιμών κινητής υποδιαστολής. Η έξοδος είναι το αποτέλεσμα αυτής της πράξης. Ένα προσαρμοσμένο μήνυμα σφάλματος εξάγεται από τη συνάρτηση εάν ο δεύτερος αριθμός είναι μηδέν. Η δήλωση defer χρησιμοποιείται για την επίκληση του ανάκτηση από τον Πανικό λειτουργία. ο ανάκτηση από τον Πανικό Η λειτουργία θα εντοπίσει έναν πανικό που συνέβη μέσα στη λειτουργία διαίρεσης και θα εκτυπώσει ένα σφάλμα εάν συνέβη.

Η διαίρεση καλείται δύο φορές στην κύρια συνάρτηση: μία με έγκυρες εισόδους και μία με μη έγκυρη είσοδο. ο fmt.Println Η λειτουργία εκτυπώνει την έξοδο της συνάρτησης κάθε φορά που εκτελείται η λειτουργία διαίρεσης. ο ανάκτηση από τον Πανικό Η λειτουργία θα εντοπίσει έναν πανικό εάν συμβεί και θα εκτυπώσει ένα σφάλμα εάν συμβεί.

Παραγωγή

Μετά τον εντοπισμό του σφάλματος, το πρόγραμμα επανήλθε από τον πανικό και συνέχισε να εκτελείται. Ωστόσο, ο κωδικός πανικοβλήθηκε και δεν επέστρεψε τιμή στη δεύτερη κλήση για διαίρεση, γι' αυτό επέστρεψε μηδέν.

5: Σφάλμα αναδίπλωσης

Το Go περιλαμβάνει επίσης ένα χαρακτηριστικό γνωστό ως Σφάλμα αναδίπλωσης , το οποίο σας επιτρέπει να προσθέσετε πρόσθετο πλαίσιο σε ένα μήνυμα σφάλματος. Αυτό είναι χρήσιμο για την καταγραφή προβλημάτων ή την παροχή περαιτέρω λεπτομερειών σε μηνύματα σφάλματος. Αυτό μπορεί να επιτευχθεί δημιουργώντας έναν τύπο σφάλματος που ενσωματώνει το αρχικό σφάλμα και το πρόσθετο πλαίσιο.

κύριο πακέτο

εισαγωγή 'Σφάλματα'
εισαγωγή 'fmt'

func main ( ) {
αν err := μπαρ ( ) ; πλανώμαι ! = μηδέν {
fmt.Println ( πλανώμαι )
}
}
διαίρεση λειτουργιών ( α, β float64 ) ( float64, σφάλμα ) {
αν β == 0 {
ΕΠΙΣΤΡΟΦΗ 0 , σφάλματα.Νέο ( 'διαίρεση με το μηδέν' )
}
ΕΠΙΣΤΡΟΦΗ ένα / β, μηδέν
}
func bar ( ) ( λάθος λάθος ) {
_, err = διχάζω ( 42 , 0 )
αν πλανώμαι ! = μηδέν {
ΕΠΙΣΤΡΟΦΗ fmt.Σφάλμα ( 'απέτυχε ο υπολογισμός: %w' , λάθος )
}
ΕΠΙΣΤΡΟΦΗ μηδέν
}

Στον παραπάνω κώδικα, η συνάρτηση διαίρεσης υπολογίζει την αναλογία δύο αριθμών σε αυτό το παράδειγμα και εμφανίζει ένα σφάλμα εάν η δεύτερη τιμή είναι μηδέν. Η συνάρτηση ράβδου καλεί τη συνάρτηση διαίρεσης και στη συνέχεια αναδιπλώνει το σφάλμα που διαιρέστε επιστρέφει σε ένα νέο σφάλμα με ένα μήνυμα που περιλαμβάνει το αρχικό μήνυμα σφάλματος χρησιμοποιώντας τη συνάρτηση fmt.Errorf. Η συνάρτηση ράβδου καλείται από την κύρια συνάρτηση, η οποία εκτυπώνει επίσης τυχόν σφάλματα που επιστρέφει.

Παραγωγή

συμπέρασμα

Η ανάπτυξη λογισμικού πρέπει να περιλαμβάνει χειρισμός σφαλμάτων , και το Golang έχει διάφορες ενσωματωμένες λειτουργίες και μεθόδους για να το κάνετε με χάρη. Αυτοί οι μηχανισμοί επιτρέπουν στους προγραμματιστές να εντοπίζουν και να ανακτούν σφάλματα, να αποτρέπουν σφάλματα προγράμματος και να παρέχουν ενημερωτικά μηνύματα σφάλματος στους τελικούς χρήστες. Χρησιμοποιώντας αποτελεσματικά αυτούς τους μηχανισμούς διαχείρισης σφαλμάτων, οι προγραμματιστές μπορούν να δημιουργήσουν ισχυρές, αξιόπιστες και αποτελεσματικές εφαρμογές λογισμικού.