Python Χειρισμός εξαίρεσης: δοκιμάστε, πιάστε, επιτέλους και ανεβάστε [Παράδειγμα]
Τι είναι ο χειρισμός εξαίρεσης Python?
Εξαίρεση αποτελεί ένα σφάλμα που συμβαίνει τη στιγμή της εκτέλεσης ενός προγράμματος. Ωστόσο, κατά την εκτέλεση ενός προγράμματος, Python δημιουργεί μια εξαίρεση που πρέπει να αντιμετωπιστεί για να αποφευχθεί η κατάρρευση του προγράμματός σας. Σε Python γλώσσα, οι εξαιρέσεις ενεργοποιούνται αυτόματα σε σφάλματα ή μπορούν να ενεργοποιηθούν και να υποκλαπούν από τον κώδικά σας.
Η εξαίρεση υποδεικνύει ότι, αν και το συμβάν μπορεί να συμβεί, αυτός ο τύπος συμβάντος συμβαίνει σπάνια. Όταν η μέθοδος δεν είναι σε θέση να χειριστεί την εξαίρεση, μεταφέρεται στη συνάρτηση καλούντος. Τελικά, όταν μια εξαίρεση απορρίπτεται από την κύρια λειτουργία, το πρόγραμμα τερματίζεται απότομα.
Κοινά Παραδείγματα Εξαίρεσης
- Διαίρεση με το μηδέν
- Πρόσβαση σε αρχείο που δεν υπάρχει.
- Προσθήκη δύο ασυμβίβαστων τύπων
- Προσπάθεια πρόσβασης σε ένα ανύπαρκτο ευρετήριο μιας ακολουθίας
- Αφαίρεση του πίνακα από τον αποσυνδεδεμένο διακομιστή βάσης δεδομένων.
- Ανάληψη από ATM άνω του διαθέσιμου ποσού
Γιατί πρέπει να χρησιμοποιήσετε τις Εξαιρέσεις;
Εδώ είναι οι λόγοι για τη χρήση εξαιρέσεων σε Python:
- Ο χειρισμός εξαιρέσεων σάς επιτρέπει να διαχωρίσετε τον κώδικα χειρισμού σφαλμάτων από τον κανονικό κώδικα.
- Εξαίρεση είναι ένα Python αντικείμενο που αντιπροσωπεύει σφάλμα.
- Όπως και με τα σχόλια κώδικα, οι εξαιρέσεις σάς βοηθούν να υπενθυμίσετε στον εαυτό σας τι περιμένει το πρόγραμμα.
- Αποσαφηνίζει τον κώδικα και ενισχύει την αναγνωσιμότητα.
- Σας επιτρέπει να διεγείρετε συνέπειες καθώς ο χειρισμός σφαλμάτων λαμβάνει χώρα σε ένα μέρος και με έναν τρόπο.
- Μια εξαίρεση είναι μια βολική μέθοδος για το χειρισμό μηνυμάτων σφάλματος.
- In Python, μπορείτε να δημιουργήσετε μια εξαίρεση στο πρόγραμμα χρησιμοποιώντας τη μέθοδο εξαίρεσης αύξησης.
- Η αύξηση μιας εξαίρεσης σάς βοηθά να διακόψετε την τρέχουσα εκτέλεση κώδικα και επαναφέρει την εξαίρεση στην αναμενόμενη έως ότου αντιμετωπιστεί.
- Εξαιρέσεις επεξεργασίας για στοιχεία που δεν μπορούν να τα χειριστούν άμεσα.
Κανόνες Εξαιρέσεις
Εδώ είναι μερικοί βασικοί κανόνες του Python χειρισμός εξαιρέσεων:
- Εξαιρέσεις πρέπει να είναι αντικείμενα κλάσης
- Για εξαιρέσεις κλάσης, μπορείτε να χρησιμοποιήσετε τη δήλωση try με μια ρήτρα εκτός που αναφέρει μια συγκεκριμένη κλάση.
- Ακόμα κι αν μια πρόταση ή μια έκφραση είναι συντακτικά σωστή, μπορεί να εμφανίσει ένα σφάλμα όταν γίνεται προσπάθεια εκτέλεσής της.
- Τα σφάλματα που εντοπίζονται κατά την εκτέλεση ονομάζονται εξαιρέσεις και δεν είναι άνευ όρων μοιραία.
Python Μηχανισμός χειρισμού εξαιρέσεων
Η διαχείριση εξαιρέσεων γίνεται από τις ακόλουθες 5 λέξεις-κλειδιά:
- προσπαθώ
- αλιευμάτων
- τελικά
- βολή
Python Δοκιμάστε τη δήλωση
Μια πρόταση δοκιμής περιλαμβάνει τη λέξη-κλειδί δοκιμή, ακολουθούμενη από άνω και κάτω τελεία (:) και μια σουίτα κώδικα στην οποία ενδέχεται να προκύψουν εξαιρέσεις. Έχει μία ή περισσότερες ρήτρες.
Κατά την εκτέλεση της εντολής try, εάν δεν προέκυψαν εξαιρέσεις τότε, ο διερμηνέας αγνοεί τους χειριστές εξαιρέσεων για τη συγκεκριμένη πρόταση δοκιμής.
Σε περίπτωση που, εάν προκύψει κάποια εξαίρεση σε μια σουίτα δοκιμής, η σουίτα δοκιμής λήγει και ο έλεγχος προγράμματος μεταφέρεται στον αντίστοιχο χειριστή εκτός από το πρόγραμμα διαχείρισης που ακολουθεί τη σουίτα δοκιμής.
Syntax: try: statement(s)
Η δήλωση αλιευμάτων
Τα μπλοκ catch λαμβάνουν ένα όρισμα τη φορά, το οποίο είναι ο τύπος εξαίρεσης που είναι πιθανό να πιάσει. Αυτά τα επιχειρήματα μπορεί να κυμαίνονται από έναν συγκεκριμένο τύπο εξαίρεσης που μπορεί να ποικίλει σε μια κατηγορία εξαιρέσεων catch-all.
Κανόνες για το μπλοκ αλιευμάτων:
- Μπορείτε να ορίσετε ένα μπλοκ catch χρησιμοποιώντας τη λέξη-κλειδί catch
- Η παράμετρος Catch Exception περικλείεται πάντα σε παρένθεση
- Αντιπροσωπεύει πάντα τον τύπο εξαίρεσης που χειρίζεται το catch block.
- Ένας κώδικας χειρισμού εξαιρέσεων είναι γραμμένος ανάμεσα σε δύο σγουρά άγκιστρα {}.
- Μπορείτε να τοποθετήσετε πολλά μπλοκ catch μέσα σε ένα μπλοκ δοκιμής.
- Μπορείτε να χρησιμοποιήσετε ένα μπλοκ catch μόνο μετά το μπλοκ δοκιμής.
- Όλο το μπλοκ catch θα πρέπει να ταξινομηθεί από υποκλάση σε εξαίρεση υπερκλάσης.
Παράδειγμα:
try } catch (ArrayIndexOutOfBoundsException e) { System.err.printin("Caught first " + e.getMessage()); } catch (IOException e) { System.err.printin("Caught second " + e.getMessage()); }
Τέλος δήλωση στο Python
Τέλος, το μπλοκ εκτελείται πάντα ανεξάρτητα από το εάν υπάρχει εξαίρεση ή όχι. Η τελική λέξη-κλειδί σάς επιτρέπει να δημιουργήσετε ένα μπλοκ κώδικα που ακολουθεί ένα μπλοκ try-catch.
Τέλος, η ρήτρα είναι προαιρετική. Προορίζεται να ορίσει ενέργειες καθαρισμού που θα πρέπει να εκτελούνται σε όλες τις συνθήκες.
try: raise KeyboardInterrupt finally: print 'welcome, world!' Output Welcome, world! KeyboardInterrupt
Τέλος, ο όρος εκτελείται πριν από τη δήλωση try.
Αύξηση δήλωσης σε Python
Η δήλωση αύξησης καθορίζει ένα όρισμα που αρχικοποιεί το αντικείμενο εξαίρεσης. Εδώ, ένα κόμμα ακολουθεί το όνομα της εξαίρεσης και το όρισμα ή η πλειάδα του ορίσματος που ακολουθεί το κόμμα.
Σύνταξη:
raise [Exception [, args [, traceback]]]
Σε αυτήν τη σύνταξη, το όρισμα είναι προαιρετικό και κατά τη στιγμή της εκτέλεσης, η τιμή του ορίσματος εξαίρεσης είναι πάντα καμία.
Παράδειγμα:
A Python Η εξαίρεση μπορεί να είναι οποιαδήποτε τιμή όπως μια συμβολοσειρά, μια κλάση, ένας αριθμός ή ένα αντικείμενο. Οι περισσότερες από αυτές τις εξαιρέσεις που εγείρονται από Python πυρήνας είναι οι κλάσεις με ένα όρισμα που είναι ένα παράδειγμα της κλάσης.
σημαντικό Python λάθη
Τύπος σφάλματος | Τεχνικές Περιγραφές |
---|---|
Αριθμητικό Σφάλμα | Το ArithmeticError λειτουργεί ως βασική κλάση για όλες τις αριθμητικές εξαιρέσεις. Ανυψώνεται για σφάλματα στις αριθμητικές πράξεις. |
Εισαγωγή Σφάλμα | Το ImportError εμφανίζεται όταν προσπαθείτε να εισαγάγετε μια λειτουργική μονάδα που δεν υπάρχει. Αυτό το είδος εξαίρεσης προκύπτει εάν έχετε κάνει λάθος πληκτρολόγησης στο όνομα της λειτουργικής μονάδας ή στη μονάδα που δεν υπάρχει στην τυπική διαδρομή. |
Σφάλμα ευρετηρίου | Ένα IndexErroris εμφανίζεται όταν προσπαθείτε να παραπέμψετε μια ακολουθία που είναι εκτός εύρους. |
Σφάλμα κλειδιού | Όταν ένα συγκεκριμένο κλειδί δεν βρίσκεται σε ένα λεξικό, δημιουργείται μια εξαίρεση KeyError. |
ΌνομαΣφάλμα | Ένα NameError εμφανίζεται όταν ένα όνομα αναφέρεται σε κώδικα που δεν υπάρχει ποτέ στον τοπικό ή παγκόσμιο χώρο ονομάτων. |
ValueError | Το σφάλμα τιμής αυξάνεται όταν μια συνάρτηση ή μια ενσωματωμένη λειτουργία λαμβάνει ένα όρισμα που μπορεί να είναι σωστού τύπου αλλά δεν έχει την κατάλληλη τιμή. |
EOFerror | Αυτό το είδος σφάλματος εμφανίζεται όταν μία από τις ενσωματωμένες συναρτήσεις (input() ή raw_input()) φτάσει σε μια συνθήκη EOF χωρίς ανάγνωση δεδομένων. |
ZeroDivisonError | Αυτός ο τύπος σφάλματος προκύπτει όταν η διαίρεση ή η ενότητα με το μηδέν λαμβάνει χώρα για όλους τους αριθμούς τύπους. |
IO Error- | Αυτό το είδος σφάλματος προκύπτει όταν μια λειτουργία εισόδου/εξόδου αποτυγχάνει. |
συντακτικό λάθος | Σφάλματα σύνταξης που παρουσιάζονται όταν υπάρχει σφάλμα Python σύνταξη. |
Σφάλμα αναγνώρισης | Αυτό το σφάλμα προέκυψε όταν η εσοχή δεν έχει οριστεί σωστά |
Άλλο Σημαντικό Python εξαιρέσεις
Εξαίρεση | Τεχνικές Περιγραφές |
---|---|
Αριθμητική Εξαίρεση | Αριθμητικό σφάλμα, όπως διαίρεση με μηδέν. |
ArraylndexOutOfBoundsException | Ο δείκτης πίνακα είναι εκτός ορίων. |
ArrayStoreException | Η εκχώρηση σάς βοηθά στο στοιχείο πίνακα ασυμβίβαστου τύπου. |
ClassCastException | Μη έγκυρο καστ |
MlegalMonitorStateException | Παράνομη λειτουργία οθόνης, όπως η αναμονή σε ένα ξεκλείδωτο νήμα. |
MlegalStateException | Το περιβάλλον ή η εφαρμογή είναι σε λάθος κατάσταση. |
ClassNotFoundException | Η τάξη δεν βρέθηκε. |
CloneNotSupportedException | Προσπαθήστε να κλωνοποιήσετε ένα αντικείμενο που δεν υλοποιεί τη διεπαφή Cloneable. |
Παράνομη Εξαίρεση πρόσβασης | Η πρόσβαση σε μια τάξη δεν επιτρέπεται. |
InstantiationException | Εμφανίζεται όταν προσπαθείτε να δημιουργήσετε ένα αντικείμενο μιας διεπαφής ή μιας αφηρημένης κλάσης. |
CloneNotSupportedException | Προσπαθήστε να κλωνοποιήσετε ένα αντικείμενο που δεν υλοποιεί τη διεπαφή. |
Σφάλμα έναντι εξαιρέσεων
Λάθος | εξαιρέσεις |
---|---|
Όλα τα λάθη σε Python είναι ο μη επιλεγμένος τύπος. | Οι εξαιρέσεις περιλαμβάνουν τόσο τον επιλεγμένο όσο και τον μη επιλεγμένο τύπο. |
Παρουσιάζονται σφάλματα κατά το χρόνο εκτέλεσης τα οποία είναι άγνωστα στον μεταγλωττιστή. | Οι εξαιρέσεις μπορούν να ανακτηθούν με το χειρισμό τους με τη βοήθεια μπλοκ try-catch. |
Τα σφάλματα προκαλούνται κυρίως από το περιβάλλον στο οποίο εκτελείται μια εφαρμογή. | Η ίδια η εφαρμογή προκαλεί εξαιρέσεις. |
Παραδείγματα: OutofMemoryError |
Παραδείγματα: Επιλεγμένες εξαιρέσεις, εξαίρεση SQL, NullPointerException, κ.λπ. |
Περίληψη
- Εξαίρεση αποτελεί ένα σφάλμα που συνέβη κατά την εκτέλεση ενός προγράμματος.
- Η εξαίρεση υποδεικνύει ότι, αν και το συμβάν μπορεί να συμβεί, αυτός ο τύπος συμβάντος συμβαίνει σπάνια.
- Συνήθη παραδείγματα εξαίρεσης είναι 1) Διαίρεση με μηδέν, 2) Πρόσβαση σε αρχείο που δεν υπάρχει, 3) Προσθήκη δύο ασύμβατων τύπων.
- Εξαίρεση είναι ένα Python αντικείμενο που αντιπροσωπεύει ένα σφάλμα.
- Μια πρόταση δοκιμής περιλαμβάνει τη λέξη-κλειδί δοκιμή, ακολουθούμενη από άνω και κάτω τελεία (:) και μια σουίτα κώδικα στην οποία ενδέχεται να προκύψουν εξαιρέσεις. Έχει μία ή περισσότερες ρήτρες.
- Τα μπλοκ catch λαμβάνουν ένα όρισμα τη φορά, το οποίο είναι ο τύπος εξαίρεσης που είναι πιθανό να πιάσει.
- Η δήλωση αύξησης καθορίζει ένα όρισμα που αρχικοποιεί το αντικείμενο εξαίρεσης.
- Τέλος, το μπλοκ εκτελείται πάντα ανεξάρτητα από το εάν υπάρχει εξαίρεση ή όχι.