Διαδρομές
/
Go
Go
/
Ασκήσεις
/
Διαχείριση Σφαλμάτων
Διαχείριση Σφαλμάτων

Διαχείριση Σφαλμάτων

Μέτριο

Οδηγίες

Υλοποίησε διάφορα είδη χειρισμού σφαλμάτων και διαχείρισης πόρων.

Ένα σημαντικό σημείο του προγραμματισμού είναι το πώς να χειρίζεσαι τα σφάλματα και να κλείνεις πόρους ακόμα κι αν συμβούν σφάλματα.

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

Υλοποίηση

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

Σε αυτή την άσκηση θα χρειαστεί να ορίσεις μια συνάρτηση Use(opener ResourceOpener, input string) error που ανοίγει έναν πόρο, καλεί τη Frob(input) στον πόρο που προκύπτει και έπειτα κλείνει αυτόν τον πόρο (σε κάθε περίπτωση). Η συνάρτησή σου θα πρέπει να χειρίζεται σωστά τα σφάλματα και τα panics.

Το ResourceOpener opener θα είναι μια συνάρτηση που μπορείς να καλέσεις απευθείας με opener() σε μια προσπάθεια να "ανοίξεις" τον πόρο. Επιστρέφει ένα Resource και μια τιμή σφάλματος με τον ιδιωματικό τρόπο της Go:

Δες το αρχείο common.go για τους ορισμούς των Resource, ResourceOpener, FrobError και TransientError. Θα ορίσεις τη λύση σου στο ίδιο πακέτο με τα common.go και error_handling_test.go: "erratum". Έτσι, αυτοί οι τύποι θα είναι διαθέσιμοι για χρήση στη λύση σου.

Θα υπάρχουν μερικά σημεία στη συνάρτηση Use σου όπου μπορεί να προκύψουν σφάλματα:

  • Όταν καλείς τη συνάρτηση ResourceOpener που περνάει στο Use ως πρώτη παράμετρος, μπορεί να αποτύχει με ένα σφάλμα τύπου TransientError· αν συμβεί αυτό, συνέχισε να προσπαθείς να ανοίξεις τον πόρο. Αν είναι κάποιο άλλο είδος σφάλματος, επέστρεψέ το από τη συνάρτηση Use σου.

  • Όταν καλείς τη συνάρτηση Frob στον Resource που επέστρεψε η συνάρτηση ResourceOpener, μπορεί να προκαλέσει panic με ένα FrobError (ή με κάποιο άλλο τύπο σφάλματος). Αν είναι όντως ένα FrobError, θα πρέπει να καλέσεις τη συνάρτηση Defrob του Resource χρησιμοποιώντας τη μεταβλητή .defrobTag του FrobError που προκάλεσε το panic ως είσοδο στη συνάρτηση Defrob. Σε κάθε περίπτωση, η Use θα πρέπει να επιστρέψει το σφάλμα.

  • Επίσης, πρόσεξε: αν ο Resource άνοιξε με επιτυχία, φρόντισε να καλέσεις τη συνάρτηση Close του ακριβώς μία φορά, ό,τι κι αν συμβεί (ακόμα και αν έχουν προκύψει σφάλματα).

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

Επεξεργασία μέσω GitHub Ο σύνδεσμος ανοίγει σε νέο παράθυρο ή καρτέλα
Go Exercism

Έτοιμος να ξεκινήσεις την άσκηση Διαχείριση Σφαλμάτων;

Γράψου στο Exercism για να μάθεις και να κατακτήσεις Go με 34 έννοιες165 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.