Εξαίρεση χειρισμού είναι η δυνατότητά σας να προσαρμόσετε και να εμφανίσετε μηνύματα σφάλματος για τμήματα του προγράμματος που δεν λειτουργούν.
Είτε δημιουργείτε έναν ιστότοπο, δημιουργείτε ένα API, μια ενότητα ή οποιοδήποτε άλλο προϊόν χρησιμοποιώντας το Python, η ικανότητά σας να χειρίζεστε αποτελεσματικά τις εξαιρέσεις σάς επιτρέπει να δηλώνετε ρητά την αιτία ενός σφάλματος.
Εδώ, θα ρίξουμε μια ματιά στο πώς μπορείτε να χειριστείτε τις εξαιρέσεις στο Python.
Πώς λειτουργεί ο Χειρισμός Εξαίρεσης στο Python
Όταν δημιουργείτε εξαιρέσεις, λέτε στην Python να εμφανίζει ένα μήνυμα κάθε φορά που αποτυγχάνει ένα μπλοκ κώδικα. Ο χειρισμός της εξαίρεσης είναι σαν να πείτε σε κάποιον να προσπαθήσει να αυξήσει το βάρος. Και αν δεν μπορούν, θα πρέπει να σας ενημερώσουν.
Ωστόσο, για να δημιουργήσετε μια εξαίρεση στο Python, θα πείτε στην Python να προσπαθήσει να εκτελέσει ένα συγκεκριμένο μπλοκ κώδικα. Εάν το μπλοκ αποτύχει, μπορείτε στη συνέχεια να ζητήσετε από την Python να δημιουργήσει μια καθορισμένη εξαίρεση στον αποτυχημένο κώδικα.
Πότε πρέπει να χρησιμοποιήσετε εξαιρέσεις στον προγραμματισμό Python;
Στις περισσότερες περιπτώσεις, μπορείτε να καλύψετε τυπικά σφάλματα Python χρησιμοποιώντας εξαιρέσεις. Αλλά πρέπει να είστε προσεκτικοί, καθώς κάτι τέτοιο μπορεί να προκαλέσει προβλήματα εντοπισμού σφαλμάτων. Κατά συνέπεια, ίσως δυσκολευτείτε να καταλάβετε τη βασική αιτία ενός ενδεχόμενου σφάλματος.
Επομένως, πρέπει να χρησιμοποιείτε εξαιρέσεις όταν έχετε δοκιμάσει επαρκώς τον κώδικά σας και είστε βέβαιοι ότι λειτουργεί. Τελικά, είναι καλύτερη πρακτική να τα χρησιμοποιείτε για να χειριστείτε πιθανά σφάλματα που ενδέχεται να προκύψουν από το τέλος του χρήστη και όχι από τον ίδιο τον κώδικα.
Με άλλα λόγια, μπορείτε να χρησιμοποιήσετε εξαιρέσεις ως εργαλείο προειδοποίησης για να καθοδηγήσετε τους χρήστες σχετικά με τον τρόπο χρήσης του προγράμματος.
Χειρισμός εξαιρέσεων Python
Για να χειριστείτε εξαιρέσεις στο Python, πρέπει πρώτα να τυλίξετε τον κωδικό σας σε ένα δοκιμάστε... εκτός ΟΙΚΟΔΟΜΙΚΟ ΤΕΤΡΑΓΩΝΟ. Περιστασιακά, ίσως χρειαστεί να συμπεριλάβετε ένα τελικά δήλωση για τον χειρισμό περαιτέρω ενεργειών, ανάλογα με τις ανάγκες σας.
Η έννοια κωδικοποίησης των Python εξαιρέσεων μοιάζει γενικά ως εξής:
δοκιμάστε:
"κωδικός προς εκτέλεση"
εκτός:
"μήνυμα λάθους"
Όπως αναφέρθηκε προηγουμένως, μπορείτε επίσης να χρησιμοποιήσετε τελικά σε ένα μπλοκ εξαίρεσης. Αλλά ο κώδικας που γράφετε μέσα σε ένα τελικά η ρήτρα είναι ανεξάρτητη και εκτελείται είτε υπάρχει εξαίρεση είτε όχι.
Στην ουσία, είναι χρήσιμο αν έχετε ένα άλλο μπλοκ κώδικα που θέλετε να εκτελείτε συνεχώς ανεξάρτητα από το τι συμβαίνει μέσα στο δοκιμάστε... εκτός ΟΙΚΟΔΟΜΙΚΟ ΤΕΤΡΑΓΩΝΟ.
Ακολουθεί ένα παράδειγμα:
δοκιμάστε:
εκτύπωση (9 + 6)
εκτός:
εκτύπωση ("μήνυμα σφάλματος")
τελικά:
εκτύπωση ("παρακαλώ επανεκκινήστε")
Παραγωγή:
15
κάντε επανεκκίνηση
Στον παραπάνω κώδικα, κάντε επανεκκίνηση τρέχει συνεχώς, ανεξάρτητα από το αν υπάρχει εξαίρεση ή όχι.
Ενα αλλού κατάσταση μπορεί επίσης να ακολουθήσει ένα εκτός δήλωση:
δοκιμάστε:
C = 2 + Β
εκτός:
εκτύπωση ("το B πρέπει να οριστεί")
αλλού:
εκτύπωση (u "Προστέθηκε με επιτυχία! Το αποτέλεσμα είναι% s "% (C))
Παραγωγή: Το Β πρέπει να οριστεί
Τώρα δοκιμάστε ξανά με το "B" που ορίζεται:
δοκιμάστε:
Β = 5
C = 2 + Β
εκτός:
εκτύπωση ("το B πρέπει να οριστεί")
αλλού:
εκτύπωση (u "Προστέθηκε με επιτυχία! Το αποτέλεσμα είναι% s "% (C))
Παραγωγή: Προστέθηκε με επιτυχία! Το αποτέλεσμα είναι 7
Τα παραπάνω παραδείγματα είναι μη τυποποιημένες εξαιρέσεις. Ωστόσο, μπορείτε να έχετε μια πιο ρητή εξαίρεση όταν συνδυάζετε ενσωματωμένες (καθορισμένες) εξαιρέσεις με μη τυποποιημένες:
δοκιμάστε:
C = 2 + Β
εκτός από το NameError ως err:
print (err, ":", "B πρέπει να οριστεί, παρακαλώ")
αλλού:
εκτύπωση (u "Προστέθηκε με επιτυχία! Το αποτέλεσμα είναι% s "% (C))
Παραγωγή: Το όνομα «B» δεν έχει οριστεί: Παρακαλώ ορίστε το B
Η παραπάνω εξαίρεση ελέγχει πρώτα εάν υπάρχει Όνομα Σφάλμα στο δοκιμάστε ΟΙΚΟΔΟΜΙΚΟ ΤΕΤΡΑΓΩΝΟ. Στη συνέχεια εκτυπώνει το πρότυπο Όνομα Σφάλμα πρώτη εξαίρεση ("το όνομα" B "δεν ορίζεται"). Και το υποστηρίζει με τη γραπτή εξαίρεσή σας ("Το B πρέπει να οριστεί, παρακαλώ").
Σχετιζομαι με: Βασικές αρχές προγραμματισμού που πρέπει να γνωρίζει κάθε προγραμματιστής
Και αν θέλετε να χειριστείτε μια αλυσίδα εξαιρέσεων, μπορείτε επίσης να συνοδεύσετε ένα δοκιμάστε μπλοκ με πολλά εκτός δηλώσεις. Αυτό είναι πολύ βολικό αν σας δοκιμάστε Το μπλοκ έχει τη δυνατότητα να έχει πολλές εξαιρέσεις:
δοκιμάστε:
Β = 5
C = 2 + Β
D = float (6)
F = 7/0
εκτός από το NameError ως err:
print (err, ":", "B πρέπει να οριστεί, παρακαλώ")
εκτός από το ValueError ως val:
print (val, ":", "Δεν μπορείτε να μετατρέψετε αυτά τα δεδομένα")
εκτός από το ZeroDivisionError ως zeroerr:
print (zeroerr, ":", "Δεν μπορείτε να διαιρέσετε έναν αριθμό με μηδέν")
αλλού:
εκτύπωση (u "Επιτυχής λειτουργία! Τα αποτελέσματα είναι:% s,% s και% s "% (C, D, F))
Παραγωγή: διαίρεση με μηδέν: Δεν μπορείτε να διαιρέσετε έναν αριθμό με μηδέν
Τι γίνεται αν η διαίρεση είναι έγκυρη; Για παράδειγμα, αντικατάσταση F = 7/0 στον παραπάνω κωδικό με F = 7/5 δίνει:
Παραγωγή: Επιτυχής λειτουργία! Τα αποτελέσματα είναι: 7, 6.0 και 1.4
Εξαιρέσεις που καθορίζονται από τον χρήστη στο Python
Μπορείτε επίσης να βρείτε την εξαίρεσή σας και να τους καλέσετε αργότερα στο πρόγραμμά σας. Αυτό σας επιτρέπει να δώσετε μια συγκεκριμένη περιγραφή της εξαίρεσής σας και να το ονομάσετε όπως θέλετε.
Ωστόσο, κάθε εξαίρεση που καθορίζεται από τον χρήστη (άμεσα ή έμμεσα) εξακολουθεί να προέρχεται από την ενσωματωμένη Εξαίρεση τάξη Python.
Ο παρακάτω κώδικας παραπέμπει στη βάση Εξαίρεση απευθείας τηλεφωνώντας Σφάλμα χρόνου εκτέλεσης από αυτό:
σύνδεση τάξης Error (RuntimeError):
def __init __ (αυτο, αξία):
self.value = τιμή
δοκιμάστε:
αύξηση σύνδεσηςError ("Κακό όνομα κεντρικού υπολογιστή")
εκτός της σύνδεσηςError ως err:
εκτύπωση (err.value)
Παραγωγή: Κακό όνομα κεντρικού υπολογιστή
Σημειώστε ότι σφάλμα σύνδεσης, σε αυτήν την περίπτωση, είναι μια κατηγορία που καθορίζεται από το χρήστη, την οποία μπορείτε να αυξήσετε όποτε τη χρειάζεστε στο πρόγραμμά σας.
Σχετιζομαι με: Ο οδηγός για αρχάριους για τακτικές εκφράσεις με τον Python
Μπορείτε να κάνετε μια εξαίρεση που καθορίζεται από τον χρήστη, αντλώντας την απευθείας από το Εξαίρεση βασική τάξη. Η παρακάτω εξαίρεση, ωστόσο, αποτρέπει την αφαίρεση του 5 από το 6 και καλεί την εξαίρεση από την βασική κλάση απευθείας:
σφάλματα τάξης (Εξαίρεση):
πέρασμα
τάξη έξιFiveError (σφάλματα):
def __init __ (αυτο, τιμή, μήνυμα):
self.value = τιμή
self.message = μήνυμα
δοκιμάστε:
αύξηση έξιFiveError (6-5, "Αυτή η αφαίρεση δεν επιτρέπεται")
εκτός από το sixFiveError ως e:
εκτύπωση ("Παρουσιάστηκε σφάλμα:", e.message)
Παραγωγή: Παρουσιάστηκε σφάλμα: Αυτή η αφαίρεση δεν επιτρέπεται
Στην πράξη, μπορείτε να χρησιμοποιήσετε μια εξαίρεση που ορίσατε νωρίτερα καλώντας την σε άλλη λειτουργία. Για παράδειγμα, μπορείτε να δημιουργήσετε ένα floatError που επιτρέπει μόνο την προσθήκη δύο πλωτήρων:
# Καλέστε πρώτα τις κατηγορίες εξαίρεσης βάσης:
σφάλματα τάξης (Εξαίρεση):
πέρασμα
# Στη συνέχεια, αντλήστε τη δική σας εξαίρεση από την βασική τάξη:
class FloatError (σφάλματα):
def __init __ (αυτο, τιμή, μήνυμα):
self.value = τιμή
self.message = μήνυμα
# Δημιουργήστε μια συνάρτηση για να προσθέσετε δύο πλωτήρες:
def addTwoFloat (a, b):
αν (τύπος (α) και τύπος (β))! = float:
αύξηση FloatError (a + b, "Οι αριθμοί πρέπει να είναι float για προσθήκη")
αλλού:
εκτύπωση (a + b)
addTwoFloat (4, 7)
Παραγωγή: __main __. FloatError: (11, "Οι αριθμοί πρέπει να είναι float για προσθήκη")
Επειδή έχετε πλέον ορίσει ένα Σφάλμα Float τάξη, το Python το ανεβάζει αν προσπαθήσετε να προσθέσετε δύο λέξεις χωρίς πλωτήρα χρησιμοποιώντας το addtwoFloat λειτουργία.
Μπορείτε να εκτυπώσετε το Σφάλμα Float τάξη στο ίδιο αρχείο Python όπου το έχετε δημιουργήσει για να δείτε τι συμβαίνει:
εκτύπωση (FloatError)
Παραγωγή:
Σφάλμα Float, ωστόσο, δεν είναι μια ενσωματωμένη εξαίρεση Python. Μπορείτε να το επαληθεύσετε τηλεφωνώντας Σφάλμα Float σε άλλο νέο αρχείο Python όπου δεν έχετε δημιουργήσει αυτήν την τάξη:
εκτύπωση (FloatError)
Παραγωγή: NameError: το όνομα 'FloatError' δεν έχει οριστεί
Παίρνετε ένα Όνομα Σφάλμα γιατί η Python δεν το αναγνωρίζει ως τυπική εξαίρεση.
Μπορείτε επίσης να δοκιμάσετε να αυτοπροσδιορίσετε άλλες κατηγορίες σφαλμάτων για να δείτε πώς παίζουν.
Κάντε τα προγράμματα Python σας πιο φιλικά προς τον χρήστη με εξαιρέσεις
Υπάρχουν πολλές τυπικές εξαιρέσεις στο Python. Αλλά μπορείτε να ορίσετε και τη δική σας. Παρ 'όλα αυτά, η ευκολία χρήσης του προγράμματός σας εξαρτάται σε κάποιο βαθμό από τον τρόπο με τον οποίο χειρίζεται διάφορες εξαιρέσεις (είτε καθορίζονται από το χρήστη, δεν είναι συγκεκριμένες ή τυπικές).
Οι εξαιρέσεις, ωστόσο, σας επιτρέπουν να υπαγορεύσετε πώς πρέπει να λειτουργεί το πρόγραμμά σας όταν οι χρήστες αλληλεπιδρούν μαζί τους. Η σαφής και συνοπτική δήλωση της αιτίας ενός σφάλματος δίνει επίσης στους χρήστες προειδοποίηση για το τι κάνουν λάθος, και μερικές φορές, τους δείχνει προς τη σωστή κατεύθυνση.
Εξοπλίστε τον εαυτό σας με την τεχνογνωσία για να σκουπίσετε κάθε σφάλμα Python στο μονοπάτι σας.
Διαβάστε Επόμενο
- Προγραμματισμός
- Πύθων
- Εκμάθηση κωδικοποίησης

Το Idowu είναι παθιασμένο με οτιδήποτε έξυπνη τεχνολογία και παραγωγικότητα. Στον ελεύθερο χρόνο του, παίζει με την κωδικοποίηση και αλλάζει στη σκακιέρα όταν βαριέται, αλλά αγαπά επίσης να ξεφεύγει από τη ρουτίνα κάποτε. Το πάθος του για να δείξει στους ανθρώπους το δρόμο γύρω από τη σύγχρονη τεχνολογία τον παρακινεί να γράφει περισσότερα.
Εγγραφείτε στο Newsletter μας
Εγγραφείτε στο ενημερωτικό δελτίο μας για τεχνικές συμβουλές, κριτικές, δωρεάν ebook και αποκλειστικές προσφορές!
Ένα ακόμη βήμα…!
Επιβεβαιώστε τη διεύθυνση email σας στο email που μόλις σας στείλαμε.