Python Exception Handling: Δοκιμάστε, πιάστε, τέλος

Πίνακας περιεχομένων:

Anonim

Τι είναι μια εξαίρεση στο Python;

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

Η εξαίρεση υποδεικνύει ότι, αν και το συμβάν μπορεί να συμβεί, αυτός ο τύπος συμβάντος συμβαίνει σπάνια. Όταν η μέθοδος δεν είναι σε θέση να χειριστεί την εξαίρεση, μεταφέρεται στη λειτουργία καλούντος. Τελικά, όταν μια εξαίρεση απορρίπτεται από την κύρια λειτουργία, το πρόγραμμα τερματίζεται απότομα.

Σε αυτό το εξαιρετικό σεμινάριο χειρισμού Python, θα μάθετε:

  • Τι είναι μια εξαίρεση στο Python;
  • Κοινά παραδείγματα εξαίρεσης
  • Γιατί πρέπει να χρησιμοποιείτε εξαιρέσεις;
  • Κανόνες εξαιρέσεων
  • Εξαιρετικός μηχανισμός χειρισμού
    • Η δήλωση δοκιμής
    • Η δήλωση αλιευμάτων
    • Η Αύξηση Δήλωση
  • Σημαντικά σφάλματα Python
  • Άλλες σημαντικές εξαιρέσεις Python
  • Σφάλμα έναντι εξαιρέσεων

Κοινά παραδείγματα εξαίρεσης:

  • Διαίρεση με το μηδέν
  • Πρόσβαση σε ένα αρχείο που δεν υπάρχει.
  • Προσθήκη δύο ασύμβατων τύπων
  • Προσπάθεια πρόσβασης σε ανύπαρκτο ευρετήριο μιας ακολουθίας
  • Αφαίρεση του πίνακα από τον αποσυνδεδεμένο διακομιστή βάσης δεδομένων.
  • Ανάληψη ATM άνω του διαθέσιμου ποσού

Γιατί πρέπει να χρησιμοποιείτε εξαιρέσεις;

Ακολουθούν οι λόγοι για τη χρήση εξαιρέσεων στο Python:

  • Ο χειρισμός εξαίρεσης σάς επιτρέπει να διαχωρίζετε τον κωδικό χειρισμού σφαλμάτων από τον κανονικό κώδικα.
  • Εξαίρεση είναι ένα αντικείμενο Python που αντιπροσωπεύει ένα σφάλμα.
  • Όπως με τα σχόλια κώδικα, οι εξαιρέσεις σας βοηθούν να θυμηθείτε τι περιμένει το πρόγραμμα.
  • Διευκρινίζει τον κώδικα και βελτιώνει την αναγνωσιμότητα.
  • Σας επιτρέπει να διεγείρετε τις συνέπειες καθώς ο χειρισμός σφαλμάτων πραγματοποιείται σε ένα μέρος και με έναν τρόπο.
  • Εξαίρεση είναι μια βολική μέθοδος χειρισμού μηνυμάτων σφάλματος.
  • Στο Python, μπορείτε να δημιουργήσετε μια εξαίρεση στο πρόγραμμα χρησιμοποιώντας τη μέθοδο αύξησης εξαίρεσης.
  • Η αύξηση μιας εξαίρεσης σάς βοηθά να διακόψετε την τρέχουσα εκτέλεση κώδικα και να επιστρέψετε την εξαίρεση πίσω στην εκδοχή μέχρι να αντιμετωπιστεί.
  • Επεξεργασία εξαιρέσεων για στοιχεία που δεν μπορούν να τα χειριστούν άμεσα.

Κανόνες εξαιρέσεων

Ακολουθούν ορισμένοι βασικοί κανόνες χειρισμού εξαιρέσεων Python:

  • Οι εξαιρέσεις πρέπει να είναι αντικείμενα κλάσης
  • Για εξαιρέσεις τάξης, μπορείτε να χρησιμοποιήσετε τη δήλωση δοκιμής με μια ρήτρα εκτός από την οποία αναφέρεται μια συγκεκριμένη τάξη.
  • Ακόμα κι αν μια δήλωση ή μια έκφραση είναι συντακτικά σωστή, μπορεί να εμφανίσει ένα σφάλμα όταν γίνεται προσπάθεια να την εκτελέσετε.
  • Τα σφάλματα που εντοπίστηκαν κατά την εκτέλεση ονομάζονται εξαιρέσεις και δεν είναι ανεπιφύλακτα θανατηφόρα.

Εξαιρετικός μηχανισμός χειρισμού

Ο χειρισμός της εξαίρεσης διαχειρίζεται από τις ακόλουθες 5 λέξεις-κλειδιά:

  1. προσπαθήστε
  2. σύλληψη
  3. τελικά
  4. βολή

Η δήλωση δοκιμής

Μια δήλωση δοκιμής περιλαμβάνει δοκιμή λέξεων-κλειδιών, ακολουθούμενη από άνω και κάτω τελεία (:) και μια σειρά κώδικα όπου ενδέχεται να προκύψουν εξαιρέσεις. Έχει μία ή περισσότερες ρήτρες.

Κατά την εκτέλεση της δήλωσης δοκιμής, εάν δεν προέκυψαν τότε εξαιρέσεις, ο διερμηνέας αγνοεί τους χειριστές εξαίρεσης για τη συγκεκριμένη δήλωση δοκιμής.

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

Syntax:try:statement(s)

Η δήλωση αλιευμάτων

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

Κανόνες για το μπλοκ αλιευμάτων:

  • Μπορείτε να ορίσετε ένα μπλοκ catch χρησιμοποιώντας τη λέξη-κλειδί catch
  • Η παράμετρος Catch Exception περικλείεται πάντα σε παρένθεση
  • Αντιπροσωπεύει πάντα τον τύπο της εξαίρεσης που χειρίζεται το μπλοκ.
  • Ένας κωδικός χειρισμού εξαιρέσεων γράφεται μεταξύ δύο {} σγουρών τιράντες.
  • Μπορείτε να τοποθετήσετε πολλά μπλοκ catch σε ένα μπλοκ δοκιμής.
  • Μπορείτε να χρησιμοποιήσετε ένα μπλοκ αλιευμάτων μόνο μετά το μπλοκ δοκιμής.
  • Όλο το μπλοκ catch πρέπει να παραγγελθεί από την υποκατηγορία έως την superclass.

Παράδειγμα:

try}catch (ArrayIndexOutOfBoundsException e) {System.err.printin("Caught first " + e.getMessage()); } catch (IOException e) {System.err.printin("Caught second " + e.getMessage());}

Τέλος μπλοκ

Τέλος, το μπλοκ εκτελείται πάντα ανεξάρτητα από την εξαίρεση ή όχι. Η τελική λέξη-κλειδί σάς επιτρέπει να δημιουργήσετε ένα μπλοκ κώδικα που ακολουθεί ένα μπλοκ try-catch.

Τέλος, η ρήτρα είναι προαιρετική. Προορίζεται να καθορίσει ενέργειες καθαρισμού που θα πρέπει να εκτελούνται σε όλες τις συνθήκες.

try:raise KeyboardInterruptfinally:print 'welcome, world!'OutputWelcome, world!KeyboardInterrupt

Τέλος, ο όρος εκτελείται πριν από τη δήλωση δοκιμής.

Η Αύξηση Δήλωση

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

Σύνταξη:

raise [Exception [, args [, traceback]]]

Σε αυτήν τη σύνταξη, το όρισμα είναι προαιρετικό και κατά τη στιγμή της εκτέλεσης, η τιμή ορίσματος εξαίρεσης δεν είναι πάντα καμία.

Παράδειγμα:

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

Σημαντικά σφάλματα Python

Τύπος σφάλματος Περιγραφή
Σφάλμα αριθμητικής Το ArithmeticError ενεργεί ως βασική τάξη για όλες τις αριθμητικές εξαιρέσεις. Αναφέρεται για σφάλματα στις αριθμητικές πράξεις.
Σφάλμα εισαγωγής Το ImportError αυξάνεται όταν προσπαθείτε να εισαγάγετε μια ενότητα που δεν υπάρχει. Αυτό το είδος εξαίρεσης προκύπτει εάν έχετε κάνει λάθος πληκτρολόγησης στο όνομα της ενότητας ή στην ενότητα που δεν υπάρχει στην τυπική διαδρομή.
Σφάλμα ευρετηρίου Ένα IndexErrors εμφανίζεται όταν προσπαθείτε να αναφέρετε μια ακολουθία που είναι εκτός εμβέλειας.
Σφάλμα κλειδιού Όταν ένα συγκεκριμένο κλειδί δεν βρίσκεται σε ένα λεξικό, δημιουργείται μια εξαίρεση KeyError.
Όνομα Σφάλμα Ένα NameError δημιουργείται όταν ένα όνομα αναφέρεται σε κώδικα που δεν υπάρχει ποτέ στον τοπικό ή καθολικό χώρο ονομάτων.
Σφάλμα Value Το σφάλμα τιμής αυξάνεται όταν μια συνάρτηση ή μια ενσωματωμένη λειτουργία λαμβάνει ένα όρισμα που μπορεί να είναι σωστού τύπου αλλά δεν έχει την κατάλληλη τιμή.
Σφάλμα EOF Αυτό το είδος σφάλματος προκύπτει όταν μία από τις ενσωματωμένες συναρτήσεις (input () ή raw_input ()) φτάσει σε κατάσταση EOF χωρίς να διαβάσει δεδομένα.
Σφάλμα ZeroDivison Αυτός ο τύπος σφάλματος προέκυψε όταν πραγματοποιείται διαίρεση ή ενότητα με μηδέν για όλους τους αριθμητικούς τύπους.
Σφάλμα IO- Αυτό το είδος σφάλματος προέκυψε όταν αποτύχει μια λειτουργία εισόδου / εξόδου.
συντακτικό λάθος SyntaxErrors προκύπτει όταν υπάρχει σφάλμα στη σύνταξη Python.
Σφάλμα εσοχής Αυτό το σφάλμα προέκυψε όταν η εσοχή δεν έχει οριστεί σωστά

Άλλες σημαντικές εξαιρέσεις Python

Εξαίρεση Περιγραφή
ArithmeticException Αριθμητικό σφάλμα, όπως διαίρεση με μηδέν.
ArraylndexOutOfBoundsException Ο δείκτης συστοιχίας είναι εκτός ορίων.
ArrayStoreException Η ανάθεση σάς βοηθά στο στοιχείο πίνακα ενός ασυμβίβαστου τύπου.
ClassCastException Μη έγκυρο cast
MlegalMonitorStateException Παράνομη λειτουργία παρακολούθησης, όπως αναμονή σε ξεκλείδωτο νήμα.
MlegalStateException Το περιβάλλον ή η εφαρμογή είναι σε λάθος κατάσταση.
ClassNotFoundException Η τάξη δεν βρέθηκε.
CloneNotSupportedException Προσπάθεια κλωνοποίησης ενός αντικειμένου που δεν υλοποιεί τη διεπαφή Cloneable.
Παράνομη AccessException Δεν επιτρέπεται η πρόσβαση σε μια τάξη.
InstantiationException Εμφανίζεται όταν επιχειρείτε να δημιουργήσετε ένα αντικείμενο διεπαφής ή αφηρημένης κλάσης.
CloneNotSupportedException Προσπάθεια κλωνοποίησης ενός αντικειμένου που δεν υλοποιεί τη διεπαφή.

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

Λάθος Εξαιρέσεις
Όλα τα σφάλματα στο Python είναι ο μη ελεγμένος τύπος. Οι εξαιρέσεις περιλαμβάνουν τον επιλεγμένο και τον μη ελεγμένο τύπο.
Παρουσιάζονται σφάλματα κατά το χρόνο εκτέλεσης που είναι άγνωστο στον μεταγλωττιστή Οι εξαιρέσεις μπορούν να ανακτηθούν με τον χειρισμό τους με τη βοήθεια μπλοκ δοκιμής.
Τα σφάλματα προκαλούνται κυρίως από το περιβάλλον στο οποίο εκτελείται μια εφαρμογή. Η ίδια η εφαρμογή προκαλεί εξαιρέσεις.
Παραδείγματα: OutofMemoryError Παραδείγματα: Ελεγμένες εξαιρέσεις, εξαίρεση SQL, NullPointerException κ.λπ.

Περίληψη

  • Εξαίρεση είναι ένα σφάλμα που συνέβη κατά την εκτέλεση ενός προγράμματος.
  • Η εξαίρεση υποδεικνύει ότι, αν και το συμβάν μπορεί να συμβεί, αυτός ο τύπος συμβάντος συμβαίνει σπάνια.
  • Κοινά παραδείγματα εξαίρεσης είναι 1) Διαίρεση με μηδέν, 2) Πρόσβαση σε ένα αρχείο που δεν υπάρχει, 3) Προσθήκη δύο ασύμβατων τύπων.
  • Εξαίρεση είναι ένα αντικείμενο Python που αντιπροσωπεύει ένα σφάλμα.
  • Μια δήλωση δοκιμής περιλαμβάνει δοκιμή λέξεων-κλειδιών, ακολουθούμενη από άνω και κάτω τελεία (:) και μια σειρά κώδικα όπου ενδέχεται να προκύψουν εξαιρέσεις. Έχει μία ή περισσότερες ρήτρες.
  • Τα μπλοκ Catch παίρνουν ένα επιχείρημα κάθε φορά, το οποίο είναι ο τύπος εξαίρεσης που είναι πιθανό να πιάσει.
  • Η δήλωση αύξησης καθορίζει ένα επιχείρημα που αρχικοποιεί το αντικείμενο εξαίρεσης.
  • Τέλος, το μπλοκ εκτελείται πάντα ανεξάρτητα από την εξαίρεση ή όχι.