Διεξαγωγή Εξαιρέσεων στην Python
Στην Python σε σύγκριση με άλλες γλώσσες προγραμματισμού υπάρχουν πολλές περιπτώσεις που προκαλούν εξαιρέσεις.
Ας τις εξετάσουμε πιο αναλυτικά. Ας υποθέσουμε ότι έχουμε μια λίστα:
lst = [1, 2, 3]
Ας προσπαθήσουμε να προσπελάσουμε ένα μη υπάρχον στοιχείο της λίστας:
print(lts[4])
Μετά την εκτέλεση του κώδικα θα εμφανιστεί ένα σφάλμα (εξαίρεση):
IndexError: list index out of range
Εάν, however, χρειάζεται να συνεχίσουμε την εργασία χωρίς
να εμφανιστεί η εξαίρεση, πρέπει να την πιάσουμε
χρησιμοποιώντας την κατασκευή try-except. Αυτή
έχει την ακόλουθη σύνταξη:
try:
# κώδικας που μπορεί να προκαλέσει εξαίρεση
except:
# χειρισμός του σφάλματος
Στο block try πρέπει να τοποθετείται κώδικας
που μπορεί να περιέχει μια εξαίρεση. Εάν
κατά την εκτέλεση αυτού του κώδικα προκύψει
μια εξαιρετική κατάσταση, η εκτέλεση
του κώδικα δεν θα σταματήσει, αλλά θα μεταβεί στον κώδικα του block
except. Σε αυτό το block πρέπει
να οριστεί η εμφάνιση ενός μηνύματος, που να περιγράφει
με τη μεγαλύτερη δυνατή ακρίβεια την ουσία του σφάλματος που προέκυψε.
Εάν, however, κατά την εκτέλεση του block try
δεν προκύψουν εξαιρετικές καταστάσεις,
τότε ο χρήσιμος κώδικας απλά θα εκτελεστεί, ενώ ο κώδικας
από το block except - όχι.
Ας πιάσουμε την εξαίρεσή μας κατά την προσπέλαση
ενός μη υπάρχοντος στοιχείου λίστας. Για
αυτό, στο block try θα τοποθετήσουμε τον κώδικα με
το πιθανό σφάλμα. Και στο block except
θα ορίσουμε την εμφάνιση στην κονσόλα του μηνύματος 'error:
elem is not exist':
lst = [1, 2, 3]
try:
print(lst[4])
except:
print('error: elem is not exist')
Μετά την εκτέλεση του κώδικα θα εμφανιστεί:
'error: elem is not exist'
Μετά τη μελέτη της κατασκευής try-except
ο στυλ του κώδικα που γράφετε πρέπει να αλλάξει.
Τώρα όλα τα σημεία, στα οποία μπορεί να προκύψει
μια εξαιρετική κατάσταση, πρέπει να τυλίγονται
σε try, και στο block except
να ορίζεται η αντίδραση σε αυτήν την εξαίρεση.
Ζητήστε από το χρήστη δύο αριθμούς. Διαιρέστε τον έναν με τον άλλον. Πιάστε την εξαιρετική κατάσταση της διαίρεσης με το μηδέν.
Ζητήστε από το χρήστη έναν αριθμό. Βρείτε την τετραγωνική ρίζα αυτού του αριθμού. Πιάστε την εξαιρετική κατάσταση εξαγωγής ρίζας από αρνητικό αριθμό.
Δίνεται μια λίστα. Ζητήστε από το χρήστη έναν ακέραιο αριθμό. Λάβετε το στοιχείο της λίστας, τον αριθμό του οποίου εισήγαγε ο χρήστης. Πιάστε την εξαιρετική κατάσταση, που θα συμβεί εάν ο χρήστης εισήγαγε αριθμό εκτός εύρους της λίστας.
Δίνεται ο ακόλουθος κώδικας:
num = '5'
res = num + 2
print(res)
Τι συμβαίνει με αυτόν τον κώδικα; Διορθώστε τα ελαττώματά του.
Δίνεται ο ακόλουθος κώδικας:
lst = [1, 2, 3, 4]
def getElem(iter):
print(iter[4])
getElem(lst)
Τι συμβαίνει με αυτόν τον κώδικα; Διορθώστε τα ελαττώματά του.