Πώς να χειριστείτε τις εξαιρέσεις στην Python

Πώς να χειριστείτε τις εξαιρέσεις στην Python

Ο χειρισμός εξαίρεσης είναι η ικανότητά σας να προσαρμόζετε και να εμφανίζετε μηνύματα σφάλματος για τμήματα του προγράμματος που δεν λειτουργούν.





Είτε φτιάχνετε έναν ιστότοπο, είτε δημιουργείτε ένα API, μια μονάδα ή οποιοδήποτε άλλο προϊόν χρησιμοποιώντας την Python, η ικανότητά σας να χειρίζεστε αποτελεσματικά τις εξαιρέσεις σάς επιτρέπει να δηλώνετε ρητά την αιτία ενός σφάλματος.





Εδώ, θα ρίξουμε μια ματιά στον τρόπο με τον οποίο μπορείτε να χειριστείτε εξαιρέσεις στην Python.





Πώς λειτουργεί το Exception Handling στην Python

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

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



Πότε πρέπει να χρησιμοποιήσετε εξαιρέσεις στον προγραμματισμό Python;

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

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





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

Χειρισμός εξαιρέσεων Python

Για να χειριστείτε εξαιρέσεις στην Python, πρέπει πρώτα να τυλίξετε τον κώδικά σας σε ένα δοκιμάστε ... εκτός ΟΙΚΟΔΟΜΙΚΟ ΤΕΤΡΑΓΩΝΟ. Περιστασιακά, ίσως χρειαστεί να συμπεριλάβετε ένα τελικά δήλωση για τον χειρισμό περαιτέρω ενεργειών, ανάλογα με τις ανάγκες σας.





Η έννοια κωδικοποίησης των εξαιρέσεων Python μοιάζει γενικά με αυτό:

try:
'code to be executed'
except:
'error message'

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

Ουσιαστικά, είναι χρήσιμο εάν έχετε ένα άλλο μπλοκ κώδικα που θέλετε να εκτελείτε συνεχώς, ανεξάρτητα από το τι συμβαίνει μέσα στο δοκιμάστε ... εκτός ΟΙΚΟΔΟΜΙΚΟ ΤΕΤΡΑΓΩΝΟ.

Εδώ είναι ένα παράδειγμα:

try:
print(9+6)
except:
print('error message')
finally:
print('please restart')
Output:
15
please restart

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

Ενα αλλού Η κατάσταση μπορεί επίσης να ακολουθήσει ένα εκτός δήλωση:

try:
C = 2 + B
except:
print('B needs to be defined')
else:
print(u'Added successfully! The result is %s'%(C))
Output: B needs to be defined

Τώρα δοκιμάστε το ξανά με το «Β»:

try:
B = 5
C = 2 + B
except:
print('B needs to be defined')
else:
print(u'Added successfully! The result is %s'%(C))
Output: Added successfully! The result is 7

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

try:
C = 2 + B
except NameError as err:
print(err, ':', 'B needs to be defined, please')
else:
print(u'Added successfully! The result is %s'%(C))
Output: name 'B' is not defined : B needs to be defined, please

Η παραπάνω εξαίρεση ελέγχει πρώτα αν υπάρχει NameError στο προσπαθήστε ΟΙΚΟΔΟΜΙΚΟ ΤΕΤΡΑΓΩΝΟ. Στη συνέχεια εκτυπώνει το πρότυπο NameError πρώτη εξαίρεση (το 'όνομα' Β 'δεν ορίζεται'). Και το υποστηρίζει με τη γραπτή σας εξαίρεση («Πρέπει να οριστεί το Β, παρακαλώ»).

Σχετικά: Βασικές αρχές προγραμματισμού που πρέπει να γνωρίζει κάθε προγραμματιστής

πώς να χρησιμοποιήσετε καλύτερα τη φωνή Google

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

try:
B = 5
C = 2 + B
D = float(6)
F = 7/0
except NameError as err:
print(err,':', 'B needs to be defined, please')
except ValueError as val:
print(val,':', 'You can't convert that data')
except ZeroDivisionError as zeroerr:
print(zeroerr,':', 'You can't divide a number by zero')
else:
print(u'Operation successfull! The results are: %s, %s, and %s'%(C, D, F))
Output: division by zero : You can't divide a number by zero

Τι γίνεται αν η διαίρεση είναι έγκυρη; Για παράδειγμα, αντικατάσταση F = 7/0 στον παραπάνω κωδικό με F = 7/5 δίνει:

Output: Operation successfull! The results are: 7, 6.0, and 1.4

Εξαιρέσεις που καθορίζονται από τον χρήστη στην Python

Μπορείτε επίσης να βρείτε την εξαίρεσή σας και να τους καλέσετε αργότερα στο πρόγραμμά σας. Αυτό σας επιτρέπει να δώσετε μια συγκεκριμένη περιγραφή της εξαίρεσής σας και να την ονομάσετε όπως θέλετε.

Παρ 'όλα αυτά, κάθε εξαίρεση που καθορίζεται από τον χρήστη (άμεσα ή έμμεσα) εξακολουθεί να προέρχεται από την ενσωματωμένη Εξαίρεση κατηγορία Python.

Ο παρακάτω κώδικας παραπέμπει στη βάση Εξαίρεση απευθείας τηλεφωνώντας Σφάλμα χρόνου εκτέλεσης από αυτό:

class connectionError(RuntimeError):
def __init__(self, value):
self.value = value
try:
raise connectionError('Bad hostname')
except connectionError as err:
print(err.value)
Output: Bad hostname

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

Σχετίζεται με: Ο αρχικός οδηγός για τις κανονικές εκφράσεις με την Python

Μπορείτε να κάνετε μια εξαίρεση που καθορίζεται από τον χρήστη, αντλώντας την απευθείας από το Εξαίρεση βασική τάξη. Η παρακάτω εξαίρεση, ωστόσο, αποτρέπει την αφαίρεση του 5 από το 6 και καλεί την εξαίρεση από τη βασική κλάση απευθείας:

class errors(Exception):
pass
class sixFiveError(errors):
def __init__(self, value, message):
self.value = value
self.message = message
try:
raise sixFiveError(6-5,'This substraction is not allowed')
except sixFiveError as e:
print('There was an error:', e.message)
Output: There was an error: This substraction is not allowed

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

# First call the base exception classes:
class errors(Exception):
pass
# Next, derive your own exception from the base class:
class FloatError(errors):
def __init__(self, value, message):
self.value = value
self.message = message
# Create a function to add two floats:
def addTwoFloat(a, b):
if (type(a) and type(b)) != float:
raise FloatError(a+b,'Numbers must be float to add')
else:
print(a + b)
addTwoFloat(4, 7)
Output: __main__.FloatError: (11, 'Numbers must be float to add')

Επειδή έχετε πλέον ορίσει α FloatError κλάσης, η Python το ανεβάζει αν προσπαθήσετε να προσθέσετε δύο κυριολεκτικούς χαρακτήρες που δεν χρησιμοποιούν float χρησιμοποιώντας το addtwoFloat λειτουργία.

Μπορείτε να εκτυπώσετε το FloatError κλάση στο ίδιο αρχείο Python όπου το έχετε δημιουργήσει για να δείτε τι συμβαίνει:

print(FloatError)
Output:

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

print(FloatError)
Output: NameError: name 'FloatError' is not defined

Παίρνεις ένα NameError επειδή η Python δεν το αναγνωρίζει ως τυπική εξαίρεση.

Μπορείτε να δοκιμάσετε να αυτοπροσδιορίσετε και άλλες κατηγορίες σφαλμάτων για να δείτε πώς θα εξελιχθούν.

Κάντε τα προγράμματα Python πιο φιλικά προς το χρήστη με εξαιρέσεις

Υπάρχουν πολλές τυπικές εξαιρέσεις στην Python. Μπορείτε όμως να ορίσετε και το δικό σας. Παρ 'όλα αυτά, η ευκολία χρήσης του προγράμματός σας εξαρτάται σε κάποιο βαθμό από τον τρόπο με τον οποίο χειρίζεται διάφορες εξαιρέσεις (είτε καθορίζονται από τον χρήστη, είτε όχι συγκεκριμένα είτε τυπικά).

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

Μερίδιο Μερίδιο Τιτίβισμα ΗΛΕΚΤΡΟΝΙΚΗ ΔΙΕΥΘΥΝΣΗ Πώς να εντοπίσετε σφάλματα στον κώδικα Python

Εξοπλίστε τον εαυτό σας με την τεχνογνωσία για να καταστρέψετε κάθε σφάλμα Python στο δρόμο σας.

Διαβάστε Επόμενο
Σχετικά θέματα
  • Προγραμματισμός
  • Πύθων
  • Φροντιστήρια κωδικοποίησης
Σχετικά με τον Συγγραφέα Ηδίσου Ομισόλα(94 άρθρα δημοσιεύθηκαν)

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

Περισσότερα από το Idowu Omisola

Εγγραφείτε στο newsletter μας

Εγγραφείτε στο ενημερωτικό μας δελτίο για τεχνικές συμβουλές, κριτικές, δωρεάν ebooks και αποκλειστικές προσφορές!

Κάντε κλικ εδώ για εγγραφή