Σφάλματα Python και ενσωματωμένες εξαιρέσεις

Σε αυτό το σεμινάριο, θα μάθετε για διαφορετικούς τύπους σφαλμάτων και εξαιρέσεων που είναι ενσωματωμένα στο Python. Αυξάνονται κάθε φορά που ο διερμηνέας Python αντιμετωπίζει σφάλματα.

Βίντεο: Python Exception Handling

Μπορούμε να κάνουμε ορισμένα λάθη κατά τη σύνταξη ενός προγράμματος που οδηγεί σε σφάλματα όταν προσπαθούμε να το εκτελέσουμε. Ένα πρόγραμμα python τερματίζεται μόλις συναντήσει ένα λάθος που δεν έχει αντιμετωπιστεί. Αυτά τα σφάλματα μπορούν να ταξινομηθούν σε δύο κατηγορίες:

  1. Σφάλματα σύνταξης
  2. Λογικά σφάλματα (Εξαιρέσεις)

Σφάλματα σύνταξης 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 προσπαθήστε, εκτός από και τέλος δηλώσεις.

ενδιαφέροντα άρθρα...