Σε αυτό το σεμινάριο, θα μάθετε για διαφορετικούς τύπους σφαλμάτων και εξαιρέσεων που είναι ενσωματωμένα στο Python. Αυξάνονται κάθε φορά που ο διερμηνέας Python αντιμετωπίζει σφάλματα.
Βίντεο: Python Exception Handling
Μπορούμε να κάνουμε ορισμένα λάθη κατά τη σύνταξη ενός προγράμματος που οδηγεί σε σφάλματα όταν προσπαθούμε να το εκτελέσουμε. Ένα πρόγραμμα python τερματίζεται μόλις συναντήσει ένα λάθος που δεν έχει αντιμετωπιστεί. Αυτά τα σφάλματα μπορούν να ταξινομηθούν σε δύο κατηγορίες:
- Σφάλματα σύνταξης
- Λογικά σφάλματα (Εξαιρέσεις)
Σφάλματα σύνταξης Python
Σφάλμα που προκαλείται από τη μη τήρηση της σωστής δομής (σύνταξη) της γλώσσας ονομάζεται σφάλμα σύνταξης ή σφάλμα ανάλυσης .
Ας δούμε ένα παράδειγμα:
>>> if a < 3 File "", line 1 if a < 3 SyntaxError: invalid syntax
Όπως φαίνεται στο παράδειγμα, ένα βέλος υποδεικνύει πού το πρόγραμμα ανάλυσης αντιμετώπισε το σφάλμα σύνταξης.
Μπορούμε να παρατηρήσουμε ότι :
λείπει ένα άνω και κάτω τελεία στη if
δήλωση.
Λογικά σφάλματα Python (Εξαιρέσεις)
Τα σφάλματα που συμβαίνουν κατά το χρόνο εκτέλεσης (αφού περάσει το τεστ σύνταξη) που ονομάζεται εξαιρέσεις ή λογικά σφάλματα .
Για παράδειγμα, συμβαίνουν όταν προσπαθούμε να ανοίξουμε ένα αρχείο (για ανάγνωση) που δεν υπάρχει ( FileNotFoundError
), προσπαθούμε να διαιρέσουμε έναν αριθμό με μηδέν ( ZeroDivisionError
) ή προσπαθούμε να εισαγάγουμε μια ενότητα που δεν υπάρχει ( ImportError
).
Κάθε φορά που προκύπτουν αυτοί οι τύποι σφαλμάτων χρόνου εκτέλεσης, η Python δημιουργεί ένα αντικείμενο εξαίρεσης. Εάν δεν αντιμετωπιστεί σωστά, εκτυπώνει ένα ίχνος επιστροφής σε αυτό το σφάλμα μαζί με ορισμένες λεπτομέρειες σχετικά με το γιατί συνέβη αυτό το σφάλμα.
Ας δούμε πώς αντιμετωπίζει η Python αυτά τα σφάλματα:
>>> 1 / 0 Traceback (most recent call last): File "", line 301, in runcode File "", line 1, in ZeroDivisionError: division by zero >>> open("imaginary.txt") Traceback (most recent call last): File "", line 301, in runcode File "", line 1, in FileNotFoundError: (Errno 2) No such file or directory: 'imaginary.txt'
Ενσωματωμένες εξαιρέσεις Python
Οι παράνομες ενέργειες μπορούν να δημιουργήσουν εξαιρέσεις. Υπάρχουν πολλές ενσωματωμένες εξαιρέσεις στο Python που δημιουργούνται όταν προκύπτουν αντίστοιχα σφάλματα. Μπορούμε να δούμε όλες τις ενσωματωμένες εξαιρέσεις χρησιμοποιώντας την ενσωματωμένη local()
λειτουργία ως εξής:
print(dir(locals()('__builtins__')))
locals()('__builtins__')
θα επιστρέψει μια ενότητα ενσωματωμένων εξαιρέσεων, συναρτήσεων και χαρακτηριστικών. dir
μας επιτρέπει να παραθέσουμε αυτά τα χαρακτηριστικά ως συμβολοσειρές.
Ορισμένες από τις κοινές ενσωματωμένες εξαιρέσεις στον προγραμματισμό Python μαζί με το σφάλμα που τις προκαλεί αναφέρονται παρακάτω:
Εξαίρεση | Αιτία σφάλματος |
---|---|
AssertionError | Αναπτύσσεται όταν assert αποτύχει μια δήλωση. |
AttributeError | Αυξάνεται όταν αποτύχει η εκχώρηση χαρακτηριστικού ή η αναφορά. |
EOFError | Αυξάνεται όταν η input() συνάρτηση φτάνει στην κατάσταση του τέλους του αρχείου. |
FloatingPointError | Ανυψώνεται όταν αποτύχει η λειτουργία κινητού σημείου. |
GeneratorExit | Αυξήστε όταν close() καλείται η μέθοδος μιας γεννήτριας . |
ImportError | Αυξάνεται όταν δεν βρίσκεται η εισαγόμενη λειτουργική μονάδα. |
IndexError | Αυξάνεται όταν ο δείκτης μιας ακολουθίας είναι εκτός εύρους. |
KeyError | Ανυψώνεται όταν το κλειδί δεν βρίσκεται σε λεξικό. |
KeyboardInterrupt | Αυξάνεται όταν ο χρήστης πατά το κλειδί διακοπής ( Ctrl+C ή Delete ). |
MemoryError | Ανυψώνεται όταν μια λειτουργία εξαντλείται από τη μνήμη. |
NameError | Αναπτύσσεται όταν μια μεταβλητή δεν βρίσκεται σε τοπικό ή παγκόσμιο πεδίο. |
NotImplementedError | Αναπτύσσεται με αφηρημένες μεθόδους. |
OSError | Αυξάνεται όταν η λειτουργία του συστήματος προκαλεί σφάλμα που σχετίζεται με το σύστημα. |
OverflowError | Αυξάνεται όταν το αποτέλεσμα μιας αριθμητικής λειτουργίας είναι πολύ μεγάλο για να αναπαρασταθεί. |
ReferenceError | Αυξάνεται όταν χρησιμοποιείται ένας αδύναμος διακομιστής μεσολάβησης αναφοράς για πρόσβαση σε μια αναφορά που συλλέγεται σκουπίδια |
RuntimeError | Αυξάνεται όταν ένα σφάλμα δεν εμπίπτει σε καμία άλλη κατηγορία. |
StopIteration | Αυξήθηκε με next() συνάρτηση για να υποδείξει ότι δεν υπάρχει περαιτέρω στοιχείο που θα επιστραφεί από τον επαναληπτή. |
SyntaxError | Αυξήθηκε από το πρόγραμμα ανάλυσης όταν παρουσιάζεται σφάλμα σύνταξης. |
IndentationError | Αυξάνεται όταν υπάρχει λανθασμένη εσοχή. |
TabError | Αυξάνεται όταν η εσοχή αποτελείται από ασυνεπείς καρτέλες και κενά. |
SystemError | Αυξάνεται όταν ο διερμηνέας εντοπίζει εσωτερικό σφάλμα. |
SystemExit | Αυξήθηκε κατά sys.exit() συνάρτηση. |
TypeError | Αυξάνεται όταν μια συνάρτηση ή λειτουργία εφαρμόζεται σε ένα αντικείμενο εσφαλμένου τύπου. |
UnboundLocalError | Αυξάνεται όταν γίνεται αναφορά σε μια τοπική μεταβλητή σε μια συνάρτηση ή μέθοδο, αλλά καμία τιμή δεν έχει δεσμευτεί σε αυτήν τη μεταβλητή. |
UnicodeError | Αυξάνεται όταν παρουσιάζεται σφάλμα κωδικοποίησης ή αποκωδικοποίησης που σχετίζεται με Unicode. |
UnicodeEncodeError | Αυξάνεται όταν παρουσιάζεται σφάλμα που σχετίζεται με Unicode κατά την κωδικοποίηση. |
UnicodeDecodeError | Αυξάνεται όταν παρουσιάζεται σφάλμα που σχετίζεται με Unicode κατά την αποκωδικοποίηση. |
UnicodeTranslateError | Αυξάνεται όταν παρουσιάζεται σφάλμα που σχετίζεται με Unicode κατά τη μετάφραση. |
ValueError | Αυξάνεται όταν μια συνάρτηση παίρνει ένα όρισμα σωστού τύπου αλλά ακατάλληλη τιμή. |
ZeroDivisionError | Αυξάνεται όταν ο δεύτερος τελεστής διαίρεσης ή λειτουργίας modo είναι μηδέν. |
Εάν απαιτείται, μπορούμε επίσης να ορίσουμε τις δικές μας εξαιρέσεις στο Python. Για να μάθετε περισσότερα σχετικά με αυτά, επισκεφθείτε τις Εξαιρέσεις που καθορίζονται από τον χρήστη Python.
Μπορούμε να χειριστεί αυτά τα built-in και ορίζεται από το χρήστη εξαιρέσεις στην Python χρήση try
, except
και finally
δηλώσεις. Για να μάθετε περισσότερα γι 'αυτά, επισκεφθείτε την Python προσπαθήστε, εκτός από και τέλος δηλώσεις.